কী কোডটি পর্যালোচনা করব তা আমি কীভাবে বেছে নেব?


14

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

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

এখানে যে কয়েকটি কারণ সম্পর্কে আমি ভাবতে পারি তা পছন্দকে প্রভাবিত করতে পারে:

  • ভাষা: সি, জাভা, এসকিউএল, পিএল / এসকিউএল
  • কোড বয়স: নতুন কোড বনাম পুরানো কোড
  • কোড ব্যবহার: প্রায়শই ব্যবহৃত কোড বনাম (কার্যকরভাবে) মৃত / অল্প ব্যবহৃত কোড
  • কোডের গুরুত্ব: সমালোচক কোড বনাম অ-সমালোচক কোড
  • বিকাশকারী: জুনিয়র বিকাশকারী কোড বনাম সিনিয়র বিকাশকারী কোড

আমি বুঝতে পারি যে এটি একটি নিখুঁত সুনির্দিষ্ট উত্তর সহ কোনও প্রশ্ন নয়, তবে কোনও গাইডেন্স কার্যকর হবে।

পেরিফেরিয়ালি সম্পর্কিত কিছু প্রশ্ন:

উত্তর:


12

সাধারণভাবে, আপনাকে অবশ্যই সমস্ত কিছু পর্যালোচনা করতে হবে । যদি একটি নতুন অ্যাপ্লিকেশনটিতে 2 000 এলওসি রয়েছে, সমস্ত 2 000 এলওসি অবশ্যই পর্যালোচনা করা উচিত।

এজন্য কী পর্যালোচনা করবেন তা কীভাবে বেছে নেবেন তার সর্বোত্তম অনুশীলন নেই ।

আপনি যদি বিদ্যমান কোন বৃহত কোডবেসের কাছে যান, এর আগে কখনও পর্যালোচনা করা হয়নি, তবে আপনাকে যখন বিদ্যমান কোন বৃহত কোডবেসটি আবার লিখতে হবে এবং কোথা থেকে শুরু করতে হবে তা চয়ন করতে হবে it's এটি দৃ strongly়ভাবে নির্ভর করে:

  • কোডবেজে (একটি একক একাদিক কোড পৃথক উপাদান ইত্যাদির সেট ইত্যাদির চেয়ে পুনর্লিখন / পর্যালোচনা করা আরও কঠিন হবে),

  • আপনার প্রসঙ্গে (আপনি কীভাবে কাজ করেন তা থামাতে পারেন এবং তিন মাস (তিন বছর?) কেবল পুনর্লিখন / পর্যালোচনাতে কাজ করতে পারেন, বা আপনার যখন অল্প সময় ব্যয় করবেন তখনই আপনার অবসর থাকতে হবে)?

  • আপনি যে ধরণের পর্যালোচনা করেন (পর্যালোচনা করার মতো জিনিসগুলির কি আপনার একটি চেকলিস্ট আছে? চেকলিস্টের আইটেমগুলির উপর নির্ভর করে আপনি প্রথমে কিছু অংশ পর্যালোচনা করতে চাইতে পারেন)।

আমি আপনাকে হলে আমি হবে:

  • আপনার লিঙ্কযুক্ত দ্বিতীয় প্রশ্নের প্রথম মন্তব্যে উল্লিখিত 80% -20% নীতি অনুসরণ করুন।

  • একাউন্টে বিবেচনা করুন যে 100%, আদর্শ হয়েও এটি উপযুক্ত নয়। এটি ইউনিট পরীক্ষার জন্য 100% কোড কভারেজের মতো, এই জাতীয় কোড কভারেজটি বেশিরভাগই অসম্ভব বা অত্যন্ত ব্যয়বহুল except

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

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


আপনি যদি টিডিডি সঠিকভাবে করেন, তবে 100% কভারেজটি কেবল সহজই নয়, এটি অনিবার্যও বটে এবং প্রকৃতপক্ষে খুব কম বারে পরিণত হয়।
জোনাথন হার্টলি

4

আপনার কোডে করা সমস্ত পরিবর্তন পর্যালোচনা করে শুরু করুন; যে সমস্যা আরও খারাপ হওয়া বন্ধ করবে। তারপরে পরিবর্তনের ফ্রিকোয়েন্সি ভিত্তিতে কোড পর্যালোচনা শুরু করুন; এগুলি হবে 'সমস্যা' ক্ষেত্রগুলি।

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

যদি আপনি নির্ধারণ করতে পারেন কোন কোডটি আপনার পরীক্ষাগুলির আওতাভুক্ত নয় , তবে তা পর্যালোচনার জন্য উচ্চ অগ্রাধিকারে পরিণত হয়।


3

উত্পাদনের আগে এটি তৈরি করা সমস্ত নতুন পরিবর্তন পর্যালোচনা করুন। ইনস্টলেশন স্ক্রিপ্ট, উত্স কোড, ডাটাবেস পরিবর্তন, সবকিছু! কোড পর্যালোচনার পুরো পয়েন্টটি হ'ল খারাপ কোডটিকে উত্পাদিত করা থেকে বিরত রাখা। এটি একটি দুর্বল সাংগঠনিক স্কিম বা সহজভাবে একটি প্রবর্তিত বাগ হতে পারে কারণ কিছু বাদ পড়েছিল।

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

আপনি যদি নিরলসভাবে অশোধনকারী হন তবে কোড পর্যালোচনা দরকারী হয়ে ওঠে। অন্যথায় এটি সময়ের অপচয়।

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

যদি এমন কোনও পরিচিত ক্ষেত্র থাকে যা রিফ্যাক্ট করা দরকার তবে সেগুলি করতে খুব বেশি সময় লাগবে (যেমন 1 সপ্তাহ বা তার বেশি)। তারপরে নিজেই সেই রিফ্যাক্টরিংয়ের জন্য একটি কাজের আইটেম তৈরি করুন এবং এটিকে কাজ করার জন্য একটি আইটেম হিসাবে যুক্ত করুন।


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

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

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

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

2
@gbjbaanb আপনি কি অপ্রকাশিত কোডটি উত্পাদনে যেতে দিয়েছেন? কি দারুন. এটি আপনার বিকাশকারীদের বিশ্বাস না করার বিষয়ে নয় (আপনি আপনার বিকাশকারীদের একজনের এলিস কোডটি পর্যালোচনা করার জন্য পেতে পারেন), এটি সুস্পষ্টভাবে স্পষ্ট ভুলগুলি সন্ধান করার বিষয়ে
রব

2

সমস্ত নতুন কোড এবং বিদ্যমান কোডে পরিবর্তনগুলি পর্যালোচনা করে শুরু করুন।

বিদ্যমান কোডে পরিবর্তনগুলি পর্যালোচনা করার সময়, বিকাশকারীকে বয়স্কাউট বিধি অনুসরণ করা উচিত। কোডটি খুঁজে পাওয়ার চেয়ে তার থেকে ভাল ছেড়ে দিন।

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

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

10 বছর আগে লিখিত কোডটি পর্যালোচনা করার জন্য এটি পর্যালোচনা করা অর্থহীন, 10 বছরেরও বেশি বিকাশকারীকে উন্নত করা উচিত ছিল। সুতরাং, আপনারা যা জানেন কেবল তা জানার জন্য এটি পর্যালোচনা করার কোনও অর্থ নেই।

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


"কোডটি খুঁজে পাওয়ার চেয়ে তার চেয়ে ভাল রেখে দিন" এর জন্য +1 করুন। আমি সর্বদা এটি উত্সাহিত করার চেষ্টা করি। কেবল এটির জন্য 10 বছরের পুরানো কোডটি পর্যালোচনা করার জন্য, আপনি যা বলছেন তাতে আমি সম্মত। তবে দলটিকে পর্যালোচনা করার ধারণাটি আরও স্বাচ্ছন্দ্যময় করা সত্ত্বেও এটি করার কিছুটা সুবিধা রয়েছে কি? লোকেরা কোডটি লেখেনি সে সম্পর্কে প্রতিরক্ষামূলক হওয়ার খুব বেশি আশঙ্কা নেই (বা এত পুরানো তারা ভুলে গিয়েছে যে তারা এটি লিখেছিল।)
বুরহান আলী

1

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

আমরা এই লক্ষ্যে JIRA + SVN এর সাথে একীভূত ক্রিশিবল কোড পর্যালোচনা সহ আটলাসিয়ান ফিশই বিশ্লেষণ ব্যবহার করি না ।

যখন বিকাশকারী কোনও নির্দিষ্ট গল্পের জন্য কোডটি পরীক্ষা করে সে ফিশইয়ে একটি নতুন কোড পর্যালোচনা তৈরি করে, যেখানে তিনি দলের অন্যান্য সদস্যদের পর্যালোচনা করার জন্য নির্বাচন করেন।

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

এটিও নিশ্চিত করে যে QA কোড পর্যালোচনার পরে কোডটি রিফ্যাক্ট করার সময় কোনও কিছু যা পরিবর্তন ও সম্ভাব্যভাবে ভেঙে যেতে পারে তা পরীক্ষা না করে

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.