পার্শ্ব নোট হিসাবে: একটি নতুন কাজের জন্য অনুসন্ধান করুন। এই এক ভাল কিছু হবে না।
আপনি যে কোডটির পর্যালোচনা করছেন তার লক্ষ্যগুলি হ'ল:
প্রথম লক্ষ্যটি ইউনিট, ইন্টিগ্রেশন, সিস্টেম এবং কার্যকরী পরীক্ষাগুলি এখানে রয়েছে কিনা, তা প্রাসঙ্গিক এবং তারা যে সমস্ত পরিস্থিতি পরীক্ষা করতে হবে তা কভার করে তা পর্যালোচনা করে পর্যালোচনা করা হয়। প্রোগ্রামিং ভাষা সম্পর্কে মূল লেখকের যে বিশ্বাস রয়েছে সেগুলিও আপনাকে যাচাই করতে হবে, যা সূক্ষ্ম বাগগুলি বা কোডটি আসলে যা কিছু করে তার থেকে আলাদা কিছু করার ভান করে।
দ্বিতীয় লক্ষ্যটি হ'ল আপনার প্রশ্নটি যার দিকে केन्द्रিত। একদিকে, নতুন কোডটি কারিগরি debtণ বাড়ানোর আশা করা যায় না। অন্যদিকে, পর্যালোচনার সুযোগটি কোডটি নিজেই, তবে পুরো কোডবেজের প্রসঙ্গে। সেখান থেকে আপনি একজন পর্যালোচক হিসাবে মূল লেখকের কাছ থেকে দুটি পদ্ধতির আশা করতে পারেন:
বাইরের কোডটি আমার দোষ নয়। আমি কেবল বৈশিষ্ট্যটি বাস্তবায়ন করেছি এবং পুরো কোডবেস সম্পর্কে কোনও চিন্তা করি না।
এই দৃষ্টিকোণে, কোডটি কোডবেসের ত্রুটিগুলি অনুলিপি করবে এবং তাই অনিবার্যভাবে প্রযুক্তিগত debt ণ বাড়িয়ে তুলবে : আরও খারাপ কোড সর্বদা আরও খারাপ।
যদিও এটি একটি বৈধ স্বল্পমেয়াদী পদ্ধতির দীর্ঘমেয়াদে, এর ফলে দেরি এবং কম উত্পাদনশীলতা বৃদ্ধি পাবে এবং শেষ পর্যন্ত বিকাশ প্রক্রিয়াটি এত ব্যয়বহুল এবং ঝুঁকিপূর্ণ হতে পারে, ফলে পণ্যটি বিকশিত হওয়া বন্ধ করে দেয়।
নতুন কোড লেখা লিগ্যাসি রিফ্যাক্টর করার একটি সুযোগ।
এই দৃষ্টিকোণে, নতুনটিতে লিগ্যাসি কোডের ত্রুটিগুলির প্রভাব সীমিত হতে পারে। তদুপরি, প্রযুক্তিগত debtণ হ্রাস হতে পারে, বা কমপক্ষে কোড বৃদ্ধির সাথে আনুপাতিকভাবে বাড়ানো যায় না।
যদিও এটি একটি বৈধ দীর্ঘমেয়াদী পদ্ধতির, এটির স্বল্পমেয়াদী ঝুঁকি রয়েছে। প্রধানটি হ'ল, স্বল্প-মেয়াদী, নির্দিষ্ট বৈশিষ্ট্যটি প্রেরণ করতে মাঝে মাঝে আরও বেশি সময় লাগবে। আর একটি গুরুত্বপূর্ণ বিষয় হ'ল যদি উত্তরাধিকারের কোডটি অনির্ধারিত হয় তবে তা পুনরায় সংশোধন করানো সংবিধানগুলি প্রবর্তনের একটি বিশাল ঝুঁকি উপস্থাপন করে।
আপনি উত্সাহিত করতে চান এমন দৃষ্টিভঙ্গির উপর নির্ভর করে আপনি রেভিউইউসকে আরও বেশি বা না রিফ্যাক্টর করার পরামর্শ দিতে আগ্রহী হতে পারেন। সব ক্ষেত্রে, কোনও ক্র্যাপযুক্ত কোডবেসের অভ্যন্তরে সুন্দর আর্কিটেকচার এবং ডিজাইনের সাথে নির্দোষ, পরিষ্কার কোডের আশা করবেন না। আপনার উত্সাহিত করা উচিত নয় এমন আচরণটি যেখানে কোনও জ্ঞানী বিকাশকারী যিনি ক্রেডি কোডবেজে কাজ করতে হয় তার অংশটি ভাল করার চেষ্টা করে । জিনিসগুলি সহজ করে তোলার পরিবর্তে এটি কেবল তাদের আগে আরও জটিল করে তোলে। এখন, অভিন্ন বাজে কোডের পরিবর্তে, আপনার নকশার নিদর্শনগুলির সাথে একটি অংশ রয়েছে, পরিষ্কার, পরিষ্কার কোডের সাথে একটি অংশ রয়েছে, অন্য একটি অংশ যা সময়ের সাথে সাথে বিস্তৃতভাবে পুনঃসংশ্লিষ্ট হয়েছিল এবং কোনওরকম unityক্য নেই।
উদাহরণস্বরূপ, কল্পনা করুন যে আপনি একটি মাঝারি আকারের ওয়েবসাইটের লিগ্যাসি কোডবেস আবিষ্কার করছেন। কোনও সাধারণ কাঠামোর অভাব এবং লগিংয়ের ফ্রেমওয়ার্কটি ব্যবহার না করে লগিংটি যখন পাঠ্য ফাইলটিতে স্টাফ যোগ করে করা হয় তখন আপনি অবাক হয়ে যান। আপনি নতুন বৈশিষ্ট্যটি এমভিসি এবং লগিং ফ্রেমওয়ার্ক ব্যবহার করার সিদ্ধান্ত নিয়েছেন।
আপনার সহকর্মী অন্য একটি বৈশিষ্ট্যটি বাস্তবায়ন করছেন এবং এমন কোনও ওআরএমের অভাবের কারণে খুব অবাক হয়েছেন যেখানে একজনের নিখুঁত আকার তৈরি হয়। সুতরাং তিনি একটি ওআরএম ব্যবহার শুরু করেন।
আপনি বা আপনার সহকর্মী এমভিসি, বা লগিং ফ্রেমওয়ার্ক বা যেকোন জায়গায় একটি ওআরএম ব্যবহার করতে কয়েক হাজার লাইনের কোড পেরিয়ে যেতে পারবেন না। আসলে, এর জন্য কয়েক মাসের প্রয়োজন হবে: এমভিসি প্রবর্তনের কল্পনা করুন; কতক্ষণ লাগবে? অথবা এমন পরিস্থিতিতে যে কোনও সংস্থার ভিতরে এসকিউএল কোয়েরিটেশন (এসকিউএল ইনজেকশনের জন্য মাঝে মধ্যে স্থানগুলি) সহ কেউ এসএসএল কোয়েরিগুলি উদ্বেগজনকভাবে উত্পন্ন হয়েছিল সেখানে কী কী একটি ওআরএম সম্পর্কে?
আপনি মনে করেন আপনি দুর্দান্ত কাজ করেছেন, কিন্তু এখন, নতুন বিকাশকারী যিনি এই প্রকল্পে যোগদান করছেন তাদের আগের চেয়ে অনেক জটিলতার মুখোমুখি হতে হবে:
অনুরোধগুলি চিকিত্সার পুরানো উপায়,
এমভিসি উপায়,
পুরানো লগিং প্রক্রিয়া,
লগিং ফ্রেমওয়ার্ক,
ফ্লাইতে নির্মিত এসকিউএল কোয়েরি সহ ডাটাবেসে সরাসরি অ্যাক্সেস,
ওআরএম
একটি প্রকল্পে আমি কাজ করছিলাম, সেখানে চারটি (!) লগিং ফ্রেমওয়ার্ক পাশাপাশি পাশাপাশি ব্যবহৃত হয়েছিল (প্লাস ম্যানুয়াল লগিং)। কারণটি হ'ল প্রতিবার কেউ স্টাফ লগ করতে চাইলে এটি করার কোনও সাধারণ পদ্ধতি ছিল না, সুতরাং একটি নতুন কাঠামো শেখার পরিবর্তে (যা সব ক্ষেত্রে কেবল কোডবেসের ৫% ব্যবহার করা হত), কেবল একজন অন্যকে যুক্ত করতে পারে সে ইতিমধ্যে জানে। গণ্ডগোল কল্পনা করুন।
কোডবেসকে একবারে এক ধাপে রিফ্যাক্টর করা আরও ভাল পদ্ধতির হতে পারে। লগিংয়ের উদাহরণটি আবার গ্রহণ করলে, রিফ্যাক্টরিংয়ের মধ্যে নিম্নলিখিত ছোট ছোট পদক্ষেপ থাকে:
লিগ্যাসি লগিং সম্পন্ন সমস্ত জায়গাগুলি সন্ধান করুন (যেমন লগ ফাইলটি সরাসরি অ্যাক্সেস করা হয়) এবং নিশ্চিত করুন যে তারা সবাই একই পদ্ধতিতে কল করে।
যদি প্রযোজ্য হয় তবে এই কোডটি একটি ডেডিকেটেড লাইব্রেরিতে সরান। আমি আমার শপিং কার্ট ক্লাসে স্টোরেজ যুক্তি লগ করতে চাই না।
লগিং পদ্ধতির ইন্টারফেসটি প্রয়োজন হলে সংশোধন করুন। উদাহরণস্বরূপ, আমরা বার্তাটি অনানুষ্ঠানিক, বা কোনও সতর্কতা বা ত্রুটিযুক্ত কিনা তা নির্দেশ করে এমন একটি স্তর যুক্ত করতে পারি।
নতুন বৈশিষ্ট্যটিতে সদ্য রিফ্যাক্টর পদ্ধতিগুলি ব্যবহার করুন।
লগিং ফ্রেমওয়ার্কে স্থানান্তরিত করুন: একমাত্র প্রভাবিত কোড হ'ল ডেডিকেটেড লাইব্রেরির মধ্যে কোড।