ডিবাগিং কোডের পদ্ধতি (দুঃস্বপ্নের পরিস্থিতি)


16

আমার ঘন ঘন আমি আমার কাজটিতে একটি অ্যাপ্লিকেশন ডিবাগিংয়ের কাজ করি। এটি একটি বিআই অ্যাপ্লিকেশন যা আমরা ব্যবসায়গুলিতে নিযুক্ত করি, যার মধ্যে একটি পরীক্ষার পরিবেশ এবং উত্পাদন পরিবেশ অন্তর্ভুক্ত থাকে। আমি ভাবছি কি এই অ্যাপ্লিকেশন / সরঞ্জাম / পদ্ধতিগুলি রয়েছে যা লোকেরা এই প্রতিবন্ধগুলির উপর ভিত্তি করে পরামর্শ দিতে পারে:

  1. ডিবাগারটি ক্লায়েন্ট সাইটে বা স্থানীয়ভাবে ব্যবহার করা যাবে না, কারণ সফ্টওয়্যারটি কাস্টম তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলির উপর নির্ভর করে যার জন্য আমাদের পরীক্ষার পরিবেশ নেই। (সম্পাদনা: ন্যায়সঙ্গতভাবে, কিছু ক্ষেত্রে স্থানীয়ভাবে ডিবাগ করা সম্ভব we যদি আমরা মূল কোড ব্যতীত অন্য কিছু ব্যবহার না করি the বেশিরভাগ সমস্যাযুক্ত কোড একটি ডিলের মধ্যে থাকে যা তৃতীয় পক্ষের নির্দিষ্ট যোগাযোগকে আবদ্ধ করে: সকেট, প্রসেস পাইপস, সাবান কল, মূল কোডের আচরণ পরিবর্তন করে এমন কাস্টম যুক্তি। সাধারণত কোনও ক্লায়েন্টের প্রয়োগ বা বর্ধনের সময় আমরা এই ক্ষেত্রে নতুন কোড লিখব))

  2. আমাদের অ্যাপগুলিতে কার্যত কোনও লগিং করা হয়নি। কোন ইউনিট পরীক্ষা আছে।

  3. সংস্করণ নিয়ন্ত্রণের সম্পূর্ণ সমাধানের কেবলমাত্র 1 সংস্করণ রয়েছে (উত্স নিরাপদ 2005 ব্যবহার করে)। সুতরাং সম্পূর্ণ সমাধানটির পূর্ববর্তী সংস্করণ পাওয়া সম্ভব নয়, কেবলমাত্র পৃথক ফাইল। (যদি না কেউ এর আশেপাশের উপায়গুলি জানে)।

  4. স্থানীয়ভাবে পুনরুত্পাদন করা যায় না, প্রায়শই সময় পরীক্ষার পরিবেশে পুনরুত্পাদন করতে পারে না (উচ্চ সম্ভাবনা যে পরীক্ষা এবং উত্পাদন একই সংস্করণ নয়)।

  5. উচ্চতর সম্ভাবনা রয়েছে যে ক্লায়েন্টটি যে সংস্করণটি ব্যবহার করছে তা উত্স থেকে নিরাপদ থেকে আলাদা। এর কারণ স্বতন্ত্র ফাইলগুলি আপডেট হয়েছে, যা নির্দিষ্ট ক্লায়েন্টের জন্য কাস্টম লজিক এম্বেড করেছে। প্রায়শই যা ঘটে তা একটি বাইনারিতে আপডেট করা হয়, যার জন্য বেশ কয়েকটি অন্যান্য বাইনারিগুলির পরিবর্তন দরকার হয়, কিন্তু যখন কোন প্রতিশ্রুতি সম্পন্ন হয় তখন কারও কাছেই এর কোনও রেকর্ড বা জ্ঞান নেই। কিছুটা সাধারণ ত্রুটি আমি দেখতে পাচ্ছি হ'ল 'ফাংশন / পদ্ধতি পাওয়া যায় নি' বা 'ক্লায়েন্টের পরিবেশে' মেথড কলটিতে অনেকগুলি / খুব কম পরামিতি নির্দিষ্ট করা থাকে '।

  6. এটি একটি। নেট ভিবি সমাধান

  7. ক্লায়েন্ট সাইটে কোনও সফ্টওয়্যার ইনস্টল করা যায় না, তবে স্থানীয়ভাবে করতে পারে can

  8. আমাদের অ্যাপ্লিকেশনটি অত্যন্ত কাস্টমাইজযোগ্য, তবে দুর্ভাগ্যক্রমে কাস্টমাইজেশনের লজিকটি সমস্ত ক্লাস এবং ফাইলগুলিতে ছড়িয়ে পড়েছে, প্রতিটি ক্লায়েন্টের ভিত্তিতে ডাটাবেসে কাস্টম পরিবর্তনগুলি সহ, প্রথম প্রান্ত থেকে ডেটা স্তর পর্যন্ত সমস্ত প্রান্তে।

  9. কোডটিতে কার্যত কোনও মন্তব্য নেই। আর্কিটেকচার সম্পর্কে কোন দলিল নেই। এপিআই সম্পর্কে কোনও ডকুমেন্টেশন নেই। আমাদের কাছে কেবলমাত্র শতাধিক ইমেল চেইন রয়েছে যা কিছুটা কী ঘটছে তা ব্যাখ্যা করে। কোডটি জানেন এমন একমাত্র লোকেরা যা মূলত এটি লিখেছিল, কিন্তু তারা এখন প্রতি বিকাশকারী আর নেই যাতে তারা এতটা জড়িত না।

এবং আপনি এটি বলার আগে ... হ্যাঁ আমি জানি; আমি নিজেও গুলি করতে চাই। এটি স্প্যাগেটি কোড, শত শত সংকলক সতর্কতা এবং ভাঙ্গা বহুবর্ষ যে সত্যই ঠিক করা উচিত তা সাহায্য করে না, তবে এতে আমার কোনও বক্তব্য নেই।

বেশিরভাগ সাধারণ ধরণের ত্রুটিগুলির মধ্যে আমি নাল রেফারেন্স ত্রুটিগুলি, অবৈধ ক্যাসেটগুলি এবং অনুপস্থিত ফাংশন / ফাংশন স্বাক্ষরের অমিল are কখনও কখনও আমি ভাগ্যবান এবং ইভেন্টের দর্শক ক্লাস, পদ্ধতি এবং ব্যতিক্রম বার্তা লগইন করে। এটি সর্বাধিক সহায়ক নয়, তবে এটি এখনও কিছু। সবচেয়ে খারাপটি হ'ল স্ক্রিনশটের পাশাপাশি কোনও ত্রুটি নেই, কোনও রেপো পদক্ষেপ নেই এবং উপরে বর্ণিত জেনেরিক ত্রুটি বার্তা। কখনও কখনও তারা কেন ঘটেছিল তা খুঁজে পাওয়া সম্ভব নয়, কেবল প্রার্থনা করার জন্য যে পরিবেশটি সঠিকভাবে কনফিগার করা হয়নি এবং এটি পরে চলে যাবে go

আমি জানি এটি কিছুটা রেন্ট হিসাবে এসেছিল এবং কিছুটা হলেও এটি। তবে আমি বিকল্পগুলির জন্য মরিয়া। আমি কি অন্যান্য পদ্ধতি / সরঞ্জাম ব্যবহার করতে পারি?


43
আপনার কি রেসুমা আছে?
রবার্ট হার্ভে

5
"আমি নিজেও গুলি করতে চাই" এর জন্য +1। উত্স নিরাপদ 2005, আউট। ঠিক আছে, অন্ততপক্ষে আপনার দুর্দান্ত ইতিহাস পাঠের দিকে 'ফোকাস' করা উচিত - আপনি মূলত একজন সময়-ভ্রমণকারী! "তাই এই কারণেই আমরা আর এটি করি না" এর যত্ন সহকারে বিকাশিত দশকের দশকের পাঠ আপনি শিখবেন। গডস্পিড, ফড়িং।
ব্রায়ানএইচ

7
প্রয়োজনীয়তা # 1 দেওয়া এই জগাখিচুড়ি ডিবাগ করার ক্ষেত্রে কার্যকর হওয়ার একমাত্র উপায় হ'ল দাবিদার। সিরিয়াসলি, কোনও ম্যাজিক বুলেট নেই যা এটিকে ক্র্যাপশুট ব্যতীত আর কিছু করতে চলেছে। কিছু উপায়ে এটি আপনার কাছ থেকে কিছুটা চাপ নেওয়া উচিত, যেহেতু ডিবাগিং অবশ্যই ভাগ্যের বিষয়। বা আপনার পরিচালনা আপনাকে ভাগ্যবান হওয়ার আদেশ দিচ্ছে? স্পষ্টতই এটি টেকসই নয়, সুতরাং আপনার অন্যান্য সুযোগের সন্ধান করা উচিত।
চার্লস ই। গ্রান্ট

14
এখানে কিছু কেরিয়ারের আসল পরামর্শ দেওয়া হয়েছে: যে বাড়িতে ভয়ঙ্কর সফটওয়্যার ইঞ্জিনিয়ারিং অনুশীলন রয়েছে সেখানে দীর্ঘ সময় ব্যয় করুন এবং অনিবার্যভাবে যে বিষয়গুলি উদ্বেগজনকভাবে উত্থাপিত হয়েছে সেগুলিগুলির জন্য খারাপ বিকাশকারী হিসাবে আপনাকে পরিচালনার দ্বারা দোষ দেওয়া হবে। আমি সেখানে ছিলাম এবং আমি নিশ্চিত অন্যদেরও আছে have খুব খুব ভাল, এটি খারাপ উন্নয়নের অভ্যাস বাড়ে।
রোবট

2
আমি কীভাবে এই পরিস্থিতিগুলি পরিচালনা করি: যদি আমাকে বাজারের ওপরে ভাল বেতন দেওয়া না হয় তবে আমি আরও কিছু করতে চাই find
কেভিন ক্লিন

উত্তর:


22

রবার্ট হার্ভির পরামর্শ সম্ভবত সেরা, তবে ক্যারিয়ার পরামর্শ যেহেতু বিষয়বস্তু নয়, আমি কী উত্তর দিতে পারি তা আমি দেব:

ব্রাম্বল এবং কাদা এবং খিটখিটে পাহাড়ী ছাগলে coveredাকা খুব খাড়া পাহাড়ের নীচে আপনি। কোন সহজ উপায় আছে। আপনি যদি শীর্ষে উঠতে চান তবে আপনাকে একবারে এক চরম বেদনাদায়ক পদক্ষেপে বাধ্য করতে হবে।

দেখে মনে হচ্ছে যে জিনিসগুলি কীভাবে কাজ করা উচিত তা আপনি ঠিক জানেন । যদি আর কেউ আপনাকে সহায়তা না করে (আবার, ক্যারিয়ারের পরামর্শ উপেক্ষা করে) আপনার একমাত্র পছন্দ হ'ল এই জিনিসগুলি নিজেই ঠিক করা শুরু করা।

প্রথমত, সমস্ত পবিত্র, সেই জিনিসটিকে একটি আসল সংস্করণ নিয়ন্ত্রণ সিস্টেমে পান। সোর্স সেফ ব্যতীত খুব অনেক কিছুই, যা আবর্জনার দুর্গন্ধযুক্ত গাদা হিসাবে সুপরিচিত। gitবিনামূল্যে এবং মোটামুটি সহজেই সেট আপ করা যায়। আপনি অতীতে সংস্করণ নিয়ন্ত্রণের অভাবের সমস্যাগুলি ঠিক করতে পারবেন না, তবে ভবিষ্যতে অবিরত হওয়া থেকে সমস্যাটি অন্তত বন্ধ করুন।

এরপরে, লগিংয়ের দিকে নজর দিন। সন্ধান করুন বা সবচেয়ে খারাপ পরিস্থিতি, একটি লগিং সিস্টেম লিখুন এবং এটি ব্যবহার শুরু করুন। ক্লায়েন্ট সাইটগুলিতে পাশাপাশি ব্যবহার করা যেতে পারে এমন একটি ব্যবহার করুন, সুতরাং যখন জিনিসগুলি পাশের দিকে চলে যায় তখন আপনার কমপক্ষে কিছু থাকে।

এবং পরীক্ষাগুলি লিখতে শুরু করুন, কমপক্ষে আপনার করা নতুন পরিবর্তনগুলির জন্য।

এটিতে কোনও চিনির প্রলেপ নেই: এখানে এমন কোনও উত্তর নেই যা প্রচুর কাজ জড়িত না বা এটি ক্যারিয়ারের প্রশ্ন হিসাবে বিবেচনা করে।


বিশ্বাস করুন, আমি দৃser়তা, প্রহরী এবং লগিং যোগ করা ছাড়াও সম্ভবত ডেটা স্তরটিকেও পুনরায় লিখতে চাই (আমি সাধারণ কনফিগারেশন সমস্যাগুলি নির্ণয়ের জন্য একটি কনফিগারেশন যাচাইকারী লিখছি)। দুর্ভাগ্যক্রমে এটি আমার উপর নির্ভর করে না। আমি উত্সকে নিরাপদে কোনওভাবে ঠেলে দেওয়ার জন্য একটি অনুরোধ জানাতে পারি, তবে সাধারণ প্রতিক্রিয়া হ'ল 'আপনার উদ্দেশ্য ভাল, তবে এটি এমন নয় যা আমাদের ফোকাস করা উচিত'। হায়রে, আমি 1/2 বছরের অভিজ্ঞতার সাথে একজন কনিষ্ঠ। আমি এই পাহাড়ে আরোহণ করব কিছুক্ষণের জন্য।
Igneous01

9
@ Igneous01 সত্যি বলতে, আরোহণের জন্য একটি আলাদা পর্বত সন্ধান করার চেষ্টা করুন। অন্যান্য জায়গাগুলির কাজের পরিস্থিতি নিখুঁত নাও হতে পারে তবে আমার ধারণা কমপক্ষে আপনি যা अनुभव করছেন তার চেয়ে কমপক্ষে বেশিরভাগই ভাল। যদি আপনার দারোয়ানরা আপনার উন্নতিগুলি "এই বিষয়টির দিকে আমাদের দৃষ্টি নিবদ্ধ করা উচিত নয়" প্রত্যাখ্যান করে তবে তাদের সিদ্ধান্ত নেওয়ার সিদ্ধান্ত নেওয়া হয়েছে এবং তারা ব্যর্থ নীতিমালার ফলাফলগুলি কাটাবে (তারা ইতিমধ্যে হারানো বিকাশের সময়ের নিরিখে টন টাকার অর্থ হারাচ্ছে) । প্রশ্নটি হল, আপনি কি তাদের না করা পর্যন্ত তাদের সাথে লেগে থাকতে চান?
মাস্টার -

6
এবং মনে রাখবেন যে যখন খারাপ নীতিগুলি ব্যর্থ হয়, তখন জড়িত সবাইকে খারাপ দেখায়, এমনকি যারা দ্বিমত পোষণ করেও।
রোবট

1
হ্যাঁ, লগিং এবং ট্রেসিং শুরু করুন। ডকুমেন্টিং এবং মন্তব্য যুক্ত করাও শুরু করুন। কিছুটা হলেও, এটি সমস্ত সংযুক্ত হবে। এছাড়াও, আপনি বলছেন যে আপনি এখনও ভাগ্যবান যে এখনও সংস্থায় কিছু মূল কোডার রাখবেন, দল না থাকলে। তাদের কাছে অ্যাক্সেস পাওয়ার জন্য ম্যানেজমেন্টকে চাপ দিন যদি সম্ভব হয় তবে তাদের বোঝান যে তারা প্রশ্নগুলির সাথে অবিরাম যোগাযোগের চেয়ে বরং কিছু ডক্স তৈরি করবে।
মাওগ বলছেন মনিকা

4
@ Igneous01: দৌড়াও, হাঁটবেন না। এই জায়গাটি অসুস্থ এবং আপনাকে অসুস্থ করে তুলবে।
মনিকা পুনরায় ইনস্টল করুন - এম। শ্রাইডার

8

1) ডিবাগার ক্লায়েন্ট সাইটে ব্যবহার করা যাবে না ...

এটি পুরোপুরি স্বাভাবিক।

... বা স্থানীয়ভাবে

এখন যে সমস্যা।

2) আমাদের অ্যাপগুলিতে কার্যত কোনও লগিং করা হয়নি।

লগিং হ'ল প্রোডাকশন ডিবাগিং।

কোন ইউনিট পরীক্ষা আছে।

ওহে প্রিয়। যদিও সব কিছু সাধারণ।

3) সংস্করণ নিয়ন্ত্রণের সম্পূর্ণ সমাধানটির 1 সংস্করণ রয়েছে

তারপরে আপনি সংস্করণ নিয়ন্ত্রণ ব্যবহার করছেন না।

৪) স্থানীয়ভাবে পুনরুত্পাদন করা যায় না, প্রায়শই সময় পরীক্ষার পরিবেশে পুনরুত্পাদন করতে পারে না (উচ্চ সম্ভাবনা যে পরীক্ষা এবং উত্পাদন একই সংস্করণ নয়)।

সুতরাং কেবল মোতায়েন করা, ক্লায়েন্ট পরিবেশ ত্রুটিগুলি দেখায়।

যে ক্ষেত্রে, আপনি disgnostic লগিং অ্যাপ্লিকেশন কোড এমবেড প্রয়োজন যে (ক) যাত্রীর সঙ্গের নিজলটবহর এবং [সম্পূর্ণরূপে] রেকর্ড [মারাত্মক] ত্রুটি এবং (খ) অতিরিক্ত, অবিচ্ছিন্ন ডায়গনিস্টিক যে উত্পাদন করতে চাহিদা "আপ ডায়াল" করা যেতে পারে দরকারী মধ্যে সমস্যা (গুলি) সন্ধান করা।

5) ক্লায়েন্টটি যে সংস্করণটি ব্যবহার করছে এটি নিরাপদ উত্সের চেয়ে আলাদা chance

আবার, আপনি কেবল আপনার সুবিধার জন্য সংস্করণ নিয়ন্ত্রণ ব্যবহার করছেন না।

8) আমাদের অ্যাপ্লিকেশন অত্যন্ত কাস্টমাইজযোগ্য

এটি মোটামুটি সাধারণ।

সংস্করণ নিয়ন্ত্রণ "ব্রাঞ্চিং" এর মাধ্যমে সাইট-নির্দিষ্ট পার্থক্যগুলি পরিচালনা করা উচিত।

9) কোডটিতে কার্যত কোনও মন্তব্য নেই।

আবার, এগুলি খুব সাধারণ, কারণ বিকাশকারীরা "স্ব-ডকুমেন্টিং" কোড লেখেন, তাই না?
অথবা, অন্ততপক্ষে, কোডটি লিখবে যেদিন তারা এটি লিখবে।

আর্কিটেকচার সম্পর্কে কোন দলিল নেই।

ওহে প্রিয়।

এপিআই সম্পর্কে কোনও ডকুমেন্টেশন নেই।

ওহে প্রিয়, ওহে প্রিয়।

এবং আপনি এটি বলার আগে ... হ্যাঁ আমি জানি; আমি নিজেও গুলি করতে চাই।

না; আপনি এই লোকগুলিকে গুলি করতে চান যারা এই সমস্ত জিনিস লিখেছেন, একটি অনিবন্ধিত, অচিন্তনীয় জগাখিচুড়ি তৈরি করেছেন এবং তারপরে অযৌক্তিক জগাখিচুড়ি রেখে নতুন চারণভূমিতে চলে এসেছেন।

বেশিরভাগ সাধারণ ধরণের ত্রুটিগুলির মধ্যে আমি নাল রেফারেন্স ত্রুটিগুলি, অবৈধ ক্যাসেটগুলি এবং অনুপস্থিত ফাংশন / ফাংশন স্বাক্ষরের অমিল are

নাল রেফারেন্স এবং অবৈধ ক্যাসেটগুলি রান-টাইম ত্রুটি; কিছুটা হলেও, আপনি তাদের প্রত্যাশা করা উচিত এবং তারা যে আপনি প্রায়শই তাদের পেয়ে যাচ্ছেন তা আসল লেখকদের দ্বারা প্রতিরক্ষামূলক প্রোগ্রামিংয়ের (বা আশাবাদী উদ্বৃত্ত) অভাবের পরামর্শ দেয়।

ফাংশন স্বাক্ষর মেলে না এমন কারণে একটি ভাঙ্গা বিল্ড তৈরি করা উচিত ; তাদের "ভাঙা বিল্ডস" তৈরি করতে হবে এবং এটি কখনই দরজা থেকে সরিয়ে নেওয়া উচিত নয়!


2
"সর্বদা কোডটি যেন এমন হয় যে আপনার কোডটি বজায় রাখার সমাপ্ত ব্যক্তি হিংস্র মনোবিজ্ঞানী যিনি জানেন আপনি কোথায় থাকেন"
পেরি সি

রানটাইম ত্রুটিগুলি প্রতিরক্ষামূলক প্রোগ্রামিংয়ের অভাবের চেয়ে বোঝাপড়ার অভাবে বেশি ঘটে। ডিফেন্সিভ প্রোগ্রামিং হ'ল কোডটি কাজ করে না এই সত্যটি লুকানোর একটি উপায় way
ব্যবহারকারী 253751

1
"আর্কিটেকচার সম্পর্কে কোনও ডকুমেন্টেশন" এর অর্থ সাধারণত "কোনও আর্কিটেকচার নয়" ...
gnasher729

The site-specific differences should be managed through Version Control "Branching".- আমি মনে করি না এটি এগিয়ে যাওয়ার সর্বোত্তম উপায়। কনফিগারেশন ফাইল এবং বৈশিষ্ট্য টগলগুলি ব্যবহার করার পক্ষে আরও সাধারণ এবং সহজ কারণ বলে মনে হচ্ছে।
ষাট ফুটারসুডে

5

লগিং দিয়ে শুরু করুন। এটি সবচেয়ে বেশি প্রভাব ফেলবে। কোড বেসে লগইন ফ্রেমওয়ার্ক প্রয়োগ করুন, যেমন লগ 4 নেট বা অনুরূপ। কোড কী করে লগইন শুরু করুন।

স্থানীয়ভাবে ডিবাগিং করা উচিত। যদি তা না হয়, সিম্বল ফাইলগুলি (পিডিবি) পাওয়ার কাজ করুন যাতে আপনি যে সমস্যাগুলি ঘটে থাকে তার একটি সম্পূর্ণ চিত্র পেতে তৃতীয় পক্ষের ডিলেসে ডিবাগ করতে পারেন। WINDBG এর মতো সরঞ্জামগুলি সিস্টেমটি ক্র্যাশ হয়ে থাকলে কোন ডিএলএল সমস্যাযুক্ত তা নির্দেশ করতে পারে। যখন কোনও ক্রাশ হয় তখন কোনও মেমরি ডাম্প নিতে যে কোনও সার্ভারকে কনফিগার করতে পারে। সমস্যাটি যখন ঘটেছিল তখন এটি মূলত একটি স্ন্যাপশট। লোকেরা কী ঘটছে তার ক্লু খুঁজে পেতে স্থানীয়ভাবে ডাম্পগুলি পরীক্ষা করতে পারে। যদি ডিবাগিং সম্ভব না হয় তবে এটি সম্ভব করার বিষয়ে কাজ করুন। ডিবাগ করার জন্য প্রয়োজনীয় পদক্ষেপগুলি নথি করুন। জটিল সিস্টেমে কোনও এক সময় পুরোপুরি ডিবাগ করার জন্য প্রচুর সেটআপ প্রয়োজন।

বাগ ট্র্যাকিং ... আপনি যদি এটি ব্যবহার না করেন তবে একটি ব্যবহার শুরু করুন। এটি একটি উপযুক্ত সংস্করণ নিয়ন্ত্রণ সিস্টেমের সাথে হাত মিলিয়ে যায়। মূলত, আপনার কোডের ত্রুটিগুলি এবং সংশোধনগুলি ট্র্যাকিং শুরু করুন। সিস্টেমের ইতিহাস তৈরি করা শুরু করুন।

স্ট্যাটিক কোড বিশ্লেষণ সম্পাদন করুন। রিশার্পারের মতো কোনও সরঞ্জামে বিনিয়োগ করুন। এটি সমস্ত সম্ভাব্য নাল রেফারেন্স ব্যতিক্রম এবং অন্যান্য খারাপ কোডিং অনুশীলনগুলি দ্রুত নির্দেশ করবে। এটি কয়েকটি ক্লিকের সাহায্যে কোডটি আরও ভাল আকারে পেতে এবং কোড ফর্ম্যাটিং, ভেরিয়েবল নামকরণ ইত্যাদির মতো ক্লান্তিকর আইটেমগুলিকে স্বয়ংক্রিয় করতে সহায়তা করতে পারে আপনার কোডটি পরিমাপ করুন, কোড মেট্রিকের মাধ্যমে রিফ্যাক্টরিংয়ের জন্য গরম দাগগুলি কোথায় তা সন্ধান করুন।

রিফ্যাক্টর এবং ইউনিট পরীক্ষা। আমি ধরে নিচ্ছি যে সম্ভবত লিখিত বেশিরভাগ কোড খুব পরীক্ষামূলক নয়, তাই আমি এটির জন্য পরীক্ষা যুক্ত করার চেষ্টা করে বিরক্ত করব না। যে কোনও নতুন কোড, একটি পরীক্ষার প্রকল্প তৈরি করুন এবং ইউনিট এবং ইন্টিগ্রেশন উভয়ই পরীক্ষা পরীক্ষার লিখন শুরু করুন। ইউনিট পরীক্ষা ব্যর্থ হলে, বিল্ড ব্যর্থ। সুতরাং, আপনি যেমন অশোধক হিসাবে, সেখানে পরীক্ষা করা উচিত। পরীক্ষাগুলির সাথে একটি জিনিস হ'ল যে কোনও ব্যক্তি কোনও অ্যাপ্লিকেশন বা কোড বেস লোড না করে কোনও পদ্ধতি কল করতে এবং সেই পদ্ধতিতে ডিবাগ করার জন্য একটি পরীক্ষা লিখতে পারে। সমস্যাগুলি সমাধানের জন্য এটি দরকারী।

প্রয়োজন অনুসারে যে কোনও উপজাতি জ্ঞান নথিভুক্ত করুন। কোডটি স্ব-দস্তাবেজ হওয়া উচিত যাতে মন্তব্যগুলি এত কম থাকে but তবে অনেক সিস্টেমে কাজ করার "অস্বাভাবিক" উপায় রয়েছে those এছাড়াও কোডিং মান এবং অনুশীলনগুলি নিয়ে আসা বিবেচনা করুন। রিশার্পারের মতো একটি সরঞ্জামসেটের মাধ্যমে সেই মানগুলি কার্যকর করুন। যেহেতু বেশিরভাগ কোড সম্ভবত কোনও মানক এবং নির্দেশিকাগুলি অনুসরণ করছে না, তাই নতুন কোডে লিখিত মানদণ্ডগুলি প্রয়োগ করুন।

আপনার নতুন যেহেতু, আমি এটিকে দায়িত্ব পালনের মতো আচরণ করব treat 6 মাস থেকে 2 বছর, এবং তারপরে থাকার বা এগিয়ে যাওয়ার পছন্দ করুন। আগের দিনের চেয়ে কিছুটা ভালো করে তৈরি করে সন্তুষ্টি নিন।


4

প্রথমত, উপরোক্ত সমস্ত ...

কিছু তাত্পর্যপূর্ণ:

  • আপনার বিকাশ কম্পিউটারে উত্স নিয়ন্ত্রণ ব্যবহার করুন। এটি আমার সেরা কাজ। এটি প্রকল্পের সংস্করণ নিয়ন্ত্রণের বিকল্প নয়, যা আমাদের রয়েছে। এটি এমন একটি সরঞ্জাম যা নির্ভয়ে পরীক্ষা-নিরীক্ষা, হ্যাক করা, একই সাথে এখনও স্বতন্ত্রভাবে কাজ করার সমস্যা ইত্যাদির আশ্চর্যজনক স্বাধীনতা দেয় version
  • আপনি মন্তব্যগুলি যে পরিমাণে যুক্ত করেছেন, ইন্টেলিজেন্সের সুবিধা নিতে পাবলিক ইন্টারফেস উপাদানগুলিকে অগ্রাধিকার দিন। আপনার ডিবাগ অ্যাডভেঞ্চারের সময় আপনি ডিকার হিসাবে এটি করুন।
  • ছোটখাটো রিফ্যাক্টরিংয়ের সাথে অবিচল থাকুন। শীঘ্রই বা পরবর্তী সময়ে, প্রদত্ত কোডের কুশলের জন্য, আপনি একটি সমালোচনামূলক ভর পেতে পারেন যা ক্লাসে ডিআরআইইং আপের মতো রিডানড্যান্ট কোডের মতো বড় সংশোধনকারীকে সক্ষম করে ables
  • কোড পুনরায় ফর্ম্যাটিং এবং একই সংস্করণ নিয়ন্ত্রণের কমিটগুলিতে প্রকৃত পরিবর্তনগুলি মিশ্রণ করবেন না।
  • সলিড নীতি
    • একক দায়িত্ব কখনও উপেক্ষা করবেন না। ভাল হয়েছে, এটি অবজেক্ট ওরিয়েন্টেড প্রতিশ্রুতির পথ ; এই প্রোগ্রামটিতে।
    • সর্বদা উন্মুক্ত / বন্ধ উপেক্ষা করুন।
    • আমরা এখানে নতুন কোড কথা বলছি না।
    • উদ্দেশ্যমূলক নকশা ছাড়াই ইন্টারফেস করা রক্ষণাবেক্ষণকে বাধা দেয়।
  • refactoring
  • কিছু কোড ফাইলের ডিবাগ করার চেষ্টা করার আগে সম্পূর্ণ পুনরায় ফর্ম্যাটিং, ভেরিয়েবল পুনরায় নামকরণ ইত্যাদি প্রয়োজন। ইউনিট পরীক্ষা ছাড়াই ভিজ্যুয়াল স্টুডিওর রিফ্যাক্টর মেনু ব্যবহার করতে লজ্জা পাবেন না।
  • কেবলমাত্র ডকুমেন্টেশন যা ভুল জায়গায় স্থাপন করা যায় না তা হ'ল কোড ফাইলগুলি।
  • আপনি যখন সংস্করণ নিয়ন্ত্রণ পান ভিসি পরিকল্পনার পূর্বাভাস দিন। এবং এটি নথি! এবং শাখাগুলির জন্য নামকরণের সম্মেলন নিয়ে আসুন, ট্যাগগুলি প্রধান সফ্টওয়্যার সংস্করণ এবং মাইলফলক হাইলাইট করবে।
  • ভাল সরঞ্জাম ব্যবহার করুন
  • রাবার ডাকি ডিবাগিং অনুশীলন করুন
  • কখনও কখনও ঘটতে পারে সবচেয়ে খারাপ জিনিস হ'ল তারা আপনাকে আগুন দেয় না।

সম্পাদন করা

.NET- এ ব্রাউনফিল্ড অ্যাপ্লিকেশন বিকাশ

এই বই চেষ্টা করুন। একটি প্রাথমিক কভার মাধ্যমে পড়া কভার সম্ভবত সেরা। এই বইটি বড় চিত্র, সম্ভাবনা সম্পর্কে এবং আপনার আক্রমণাত্মক কৌশলগত এবং কৌশলগত পরিকল্পনা উভয় সম্পর্কে আপনার চিন্তাভাবনাকে সহায়তা করবে।

এটি স্টিকিং আউট

থাকুন, বলুন, পারলে 1.5 বছর; আপনি পরীক্ষামূলক অগ্রগতি করছেন কিনা তা জানতে যথেষ্ট দীর্ঘ। আপনি জানতে পারবেন যে আপনি 2 বছরের অভিজ্ঞতা বা 6 মাসের অভিজ্ঞতা 4 বার পাচ্ছেন কিনা।

"1/2 বছরের অভিজ্ঞতার সাথে জুনিয়র" হওয়ায় আমি উদ্বিগ্ন যে কোনও সম্ভাব্য নিয়োগকর্তা তাড়াতাড়ি জামিন হিসাবে দেখবেন কারণ আপনি এটি হ্যাক করতে পারেন নি। আপনি z, y, x শিখেছেন বলে কিছু বলা যায়, কিছু নাম নিয়েছিল এবং কিছু গাধা মারত - তবে আপনার সক্ষমতায় অবদান রাখতে দেওয়া হয়নি; এবং অন্যটি ব্যাখ্যা, উপায়, কোড, পরিচালনা, ইত্যাদি বাদ দেওয়ার ঝুঁকিপূর্ণ।

আমি এটির ভিত্তিতে বাইরে থাকতে পারি তবে আমার "সবচেয়ে ভাল সময় এবং সবচেয়ে খারাপ সময়" ছিল আমার প্রথম কাজ, যা আক্ষরিকভাবে অবিবেচনাযোগ্য কোড হিসাবে ঘটেছিল। আমার এক দুর্দান্ত সুপারভাইজার ছিল (বাকি সবাই ছিলেন ইন-ব্রিডিং প্রোগ্রামের ম্যানেজমেন্ট) যারা আমাকে কিছু মূল প্রোগ্রাম পুনরায় লেখার জন্য জায়গা দিয়েছিলেন। সেই অভিজ্ঞতা ছিল ওহী।

শেষ সম্পাদনা


কোড পুনরায় ফর্ম্যাটিং এবং একই সংস্করণ নিয়ন্ত্রণের কমিটগুলিতে প্রকৃত পরিবর্তনগুলি মিশ্রিত করবেন না এর জন্য +1- দুর্দান্ত পরামর্শ
কিউইরন

0

আমি বলব (5) আপনাকে প্রথমে ঠিক করতে হবে। আপনি যদি জানেন না কোন কোডটি উত্পাদন চলছে, আপনার পুনরুত্পাদন এবং সমস্যা ঠিক করার কোনও নিরাপদ উপায় নেই। এটি আপনার বিপজ্জনক পরিচয় করিয়ে দেওয়া অন্য যে কোনও পরিবর্তনকে পরিণত করে, কারণ এটি এমন সমস্যার কারণ হতে পারে যেগুলি আপনি পূর্বে কল্পনা করতে পারবেন না এবং পুনরুত্পাদন করতে পারবেন না।

কোডের কোন সংস্করণ (গুলি) এবং কোন লাইব্রেরি স্থাপন করা হয়েছে তা নির্ধারণের জন্য আপনাকে কিছু গোয়েন্দা কাজ করতে হবে এবং সম্ভবত ইঞ্জিনিয়ারিংয়ের বিপরীতে থাকতে হবে। (এবং উত্স নিয়ন্ত্রণের সাথে সামঞ্জস্য রেখে সমস্ত মোতায়েন করা কোড আনতে আপনার একটি ধারাবাহিক বিল্ড এবং মোতায়েনের ব্যবস্থা থাকা দরকার))

বিভিন্ন মোতায়েনের প্রতিরূপ তৈরি করতে আপনাকে একাধিক পরীক্ষার পরিবেশ তৈরি করতে হতে পারে। (অবশ্যই সবচেয়ে সহজ সমাধানটি হ'ল একটি নতুন পরিষ্কার বিল্ড তৈরি করা এবং এটি সর্বদা সর্বত্র নিয়মিতভাবে স্থাপন করা, তবে মনে হচ্ছে এটি সম্ভব নয়?)

কেবলমাত্র যখন আপনি সঠিক সংস্করণগুলি মোতায়েন করেছেন এবং এটির সাথে টেস্টের পরিবেশের যথাযথ সংস্করণগুলি জানেন তখনই আপনার কোডটি ঠিক করার / উন্নত করার চেষ্টা করা শুরু করা উচিত।

আপনার পরবর্তী অগ্রাধিকারটি একক কোড বেসে সংহত করা উচিত যা সর্বত্র স্থাপন করা যেতে পারে। দেখে মনে হচ্ছে আপনার কাস্টমাইজেশনের কারণে কোডের বিভিন্ন সংস্করণ রয়েছে? আপনার একক সংস্করণে একীকরণ করা উচিত এবং তারপরে কাস্টম যুক্তির জন্য কনফিগারেশন সুইচগুলি ব্যবহার করা উচিত।

এর পরে, আপনি সহজেই ডিবাগিংয়ের জন্য কোড বেসে সাবধানতার সাথে উন্নতি করতে শুরু করতে পারেন। লগিং যুক্ত করা সম্ভবত সবচেয়ে কম ঝুঁকিপূর্ণ উন্নতি is

আপনি স্বয়ংক্রিয় পরীক্ষাগুলি যুক্ত করতে চাইবেন, তবে ইউনিটসেটগুলি প্রায়শই এমন প্রকল্পে যুক্ত করা শক্ত হয় যা প্রাথমিকভাবে পরীক্ষার জন্য ডিজাইন করা হয়নি। পরিবর্তে আমি স্বয়ংক্রিয় শেষ-থেকে-শেষ ইন্টিগ্রেশন পরীক্ষা দিয়ে শুরু করার পরামর্শ দিই। এগুলি সেট আপ করা আরও জটিল, তবে সমাধানটির পুনরায় আর্কিটেক্ট করার দরকার নেই, তাই ঝুঁকিপূর্ণও কম।


0

আপনার দলে থাকা সমস্যাগুলি উপেক্ষা করে মনে হচ্ছে যে প্রথমে সম্বোধন করা হ'ল উত্পাদনের সাথে মিলে থাকা কোডটি ডিবাগ করা। অন্যথায় আপনি সম্ভবত আপনার "উত্স নিয়ন্ত্রণ" -এ থাকা কোডটিতে ঠিক করে ফেলা একটি বাগটি তাড়া করছেন। এটি যেমন নেট। আপনার নিজের কোডের সাথে তুলনা করার জন্য আপনি সহজেই প্রোডাকশন বাইনারিগুলি "ডিকম্পাইল" করতে পারেন। এটি কোনও সহজ কাজ নয় তবে আপনি সফল হলে এটি একটি ভাল উত্স নিয়ন্ত্রণ সরঞ্জামের জন্য একটি শক্ত যুক্তি যা প্রকাশিত সংস্করণগুলিতে ট্যাগ করতে পারে।


আপনি যখন ডিসকোপাইল বলতে চাচ্ছেন, আপনি মেশিন কোডটি দেখতে আইডিএ প্রো এর মতো কিছু ব্যবহার করছেন? আমি সম্ভবত এটির পরে কেবল এটি ব্যবহার করব কারণ এখানে কেউ সমাবেশ জানে না (এবং আমি খুব বেসিকগুলি জানি)।
Igneous01

ঠিক আছে, এটি নেট।, বাইনারিগুলি মেশিন কোড নয়, সেগুলি সিআইএল রয়েছে ( en.wikedia.org/wiki/Common_Interedia_Language )। এটি মোটামুটি সহজে এবং নির্ভুলভাবে সি # বা ভিবি কোডে ফিরে রূপান্তরিত হতে পারে, বিশেষত যদি এটি অবসন্ন না হয়। আপনি উদাহরণস্বরূপ আইএলএসপিএস দিয়ে এটি ব্যবহার করে দেখতে পারেন ( ilspy.net ) তবে সম্ভবত অন্যান্য সরঞ্জাম রয়েছে যা আপনি ব্যবহার করতে পারেন।
20c
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.