কোড রিভিউয়ের উদ্দেশ্য কী


76

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

সুতরাং, একটি কোড পর্যালোচনা উদ্দেশ্য কি?


16
সম্পর্কিত (স্ট্যাক ওভারফ্লোতে): কোড পর্যালোচনার উদ্দেশ্য
ইয়ানিস

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

3
"কোড পর্যালোচনার উদ্দেশ্য কী?" ডেভেলপারদের টেরিব্যাড কোড লেখা থেকে রোধ করতে এবং তাদের সঠিক দিকে চালিত করতে।
zzzzBov

7
মনে হচ্ছে কোড রিভিউটির এই প্রশ্নের অপ্রত্যক্ষ উত্তর থাকতে পারে .. কেবল সেখানে প্রশ্নোত্তর ব্রাউজ করুন, একটি কোড পর্যালোচনার উদ্দেশ্যটি বেশ
ম্যাথিউ গুইন্ডন

3
আমি অবাক হই যে প্রোগ্রামাররা একটি পর্যালোচনা চলাকালীন তাদের কোড ব্যাখ্যা করার সহজ প্রক্রিয়াটির মাধ্যমে কতবার তাদের নিজস্ব কোডগুলিতে বাগগুলি আবিষ্কার করেছে?
হ্যাচেট-নিষ্ক্রিয়

উত্তর:


75

আপনি কোড পর্যালোচনা পরিচালনা করতে চান এমন একাধিক কারণ রয়েছে:

  • অন্যান্য বিকাশকারীদের শিক্ষা। নিশ্চিত হয়ে নিন যে প্রত্যেকে কোনও ত্রুটি সমাধান বা বর্ধনের সাথে সম্পর্কিত সংশোধনটি দেখে যাতে তারা বাকি সফ্টওয়্যারটি বুঝতে পারে। এটি বিশেষত কার্যকর যখন লোকেরা এমন উপাদানগুলিতে কাজ করে যা সংহত করার প্রয়োজন হয় বা জটিল সিস্টেমে যেখানে কোনও ব্যক্তি নির্দিষ্ট মডিউলটি না দেখে দীর্ঘ সময় ধরে যেতে পারেন।
  • উন্নতির জন্য ত্রুটি বা সুযোগগুলি সন্ধান করা। দু'টি বিতরণযোগ্য কোড পাশাপাশি টেস্ট কোড এবং ডেটা দুর্বলতাগুলি সনাক্ত করতে পরীক্ষা করা যেতে পারে। এটি নিশ্চিত করে যে পরীক্ষার কোডটি দৃust় এবং বৈধ এবং নকশাগুলি এবং প্রয়োগকরণ অ্যাপ্লিকেশন জুড়ে সামঞ্জস্যপূর্ণ। যদি অতিরিক্ত পরিবর্তনগুলি করা দরকার হয় তবে এটি সুযোগটি প্রবেশের পয়েন্টের কাছাকাছি পৌঁছে দেয়।

পর্যালোচনা পরিচালনার জন্য বেশ কয়েকটি ব্যবসায়ের মামলা রয়েছে:

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

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


7
+1, আমি মনে করি আপনি সঠিক অগ্রাধিকার সহ প্রধান পয়েন্টগুলি ভালভাবে চিহ্নিত করেছেন। নিয়মিত কোড পর্যালোচনা দ্বারা ক্রমাগত খুব সৃজনশীল "ডাব্লুটিএফ" সমাধানগুলি খুঁজে পাওয়া সহকর্মীদের সাথে কাজ করার সময় ডিজাইনের ধারাবাহিকতা বজায় রাখা।
ডক ব্রাউন

আমরা আমাদের জাভাস্ক্রিপ্ট কোডটিতে কোড পর্যালোচনা করি, মূলত বিকাশকারীরা বাহ্যরেখাগত মানগুলিতে অটল থাকে তা নিশ্চিত করার জন্য, মডিউলগুলি ডিজাইন করার সময় সেট আউট প্যাটার্ন ব্যবহার করে, প্রদত্ত উপাদানগুলি ব্যবহার করে এবং আমাদের ইতিমধ্যে সমাধান রয়েছে এমন সমস্যাগুলির আশেপাশে নিনজা কোডিং (ইচ্ছাকৃতভাবে বা না) করা শুরু না করে জন্য। এগুলি দুর্ঘটনাক্রমে কাউকে অতিরিক্ত লেখার thisপ্রসঙ্গে চিহ্নিত করা, .hasOwnPropertyএটি যে জায়গায় হওয়া উচিত, ইত্যাদি ইত্যাদি ব্যবহার না করে তারা দুর্দান্ত - সুতরাং, মূলত মানগুলির জন্য। সি # এর মতো পরিচালিত ভাষায় আপনার পাঠ্যক্রমের ডায়নামিক ভাষার জন্য কয়েকটি কম কারণ রয়েছে less
নাইপ

1
এখন পর্যন্ত আপনার উত্তরটি কেবল কোডের নির্ভুলতার উন্নতিগুলিকে বোঝায়। কোডের পঠনযোগ্যতা / রক্ষণাবেক্ষণের বিষয়টি সম্বোধন করতে ব্যর্থ হয়েছে, যা বিকাশকারী দেব দ্বারা খুব কমই সঠিকভাবে মাপা হতে পারে।
আরটিস

51

কোড পর্যালোচনা জ্ঞান স্থানান্তর করার জন্য একটি সরঞ্জাম ।

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

  • যখন কোনও জুনিয়র প্রোগ্রামার সিনিয়র কোড পর্যালোচনা করে, জুনিয়র প্রোগ্রামার কৌশলগুলি বেছে নিতে পারে অন্যথায় কেবল অভিজ্ঞতার মাধ্যমে শিখে নেওয়া হয়। এটি অত্যধিক জটিল কোডের বিরুদ্ধে সংশোধক হিসাবেও কাজ করতে পারে।

    একটি পুঙ্খানুপুঙ্খ কোড পর্যালোচনাতে বিভিন্ন ডকুমেন্টেশনের বিরুদ্ধে ঘন ঘন চেকের প্রয়োজন হবে। কোনও ভাষা বা এপিআই শিখার দুর্দান্ত উপায়।

  • যখন একজন সিনিয়র প্রোগ্রামার কোনও জুনিয়রের কোড পর্যালোচনা করে, তখন প্রযুক্তিগত debtণে অনুবাদ করার আগে সমস্যাগুলি লোপ করার এটি একটি সুযোগ । একটি কোড পর্যালোচনা জুনিয়র প্রোগ্রামারদের পরামর্শ দেওয়ার জন্য একটি ভাল সেটিংস হতে পারে।

কোড পর্যালোচনা সম্পর্কে নয়:

  • … বাগ সন্ধান করছি। টেস্টগুলি এটাই। এটি এখনও ঘন ঘন ঘটবে যে একটি কোড পর্যালোচনা কিছু সমস্যা খুঁজে পেয়েছে।

  • … স্টাইল ইস্যুগুলিতে নিটপিকিং করা - একটি শৈলীর জন্য নিষ্পত্তি করুন এবং এটি প্রয়োগ করতে স্বয়ংক্রিয় বিন্যাস ব্যবহার করুন। তবে এমন অনেকগুলি বিষয় রয়েছে যা একটি স্বয়ংক্রিয় সরঞ্জাম চেক করতে পারে না। কোড পর্যাপ্তভাবে নথিভুক্ত বা স্ব-ডকুমেন্টিং রয়েছে তা নিশ্চিত করার জন্য কোড পর্যালোচনাগুলি একটি ভাল জায়গা।


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

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

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

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

2
@ প্রশস্ত আপনার নির্দিষ্ট উদাহরণটি কোনও কোড পর্যালোচনায় সম্পূর্ণ ব্লাস্ট হয়ে যাবে। এটি কোনও স্থিতিশীল কোড বিশ্লেষকের জন্য একটি লাল পতাকাও হবে (সাইক্লোমেটিক জটিলতা 17!)। একটি কোড পর্যালোচনা দ্রুত এই ফাংশনটি শব্দার্থক শৈলীতে সমস্যা হিসাবে চিহ্নিত করবে (বা এমনকি অ্যালগরিদম!)। যাহোক. এই ধরণের ইস্যু কেবল একটি "স্টাইল" ইস্যু নয়। যদি আপনি এটির মতো আচরণ করেন তবে আপনার রিপোজিটরিতে বাস্তবের মধ্যে শীঘ্রই কিছু বাজে কোড আসবে; এটি কেবল "স্টাইল", সর্বোপরি।
পিএমজিডি

12

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


2
এই পূর্বে 4 উত্তর উপর কিছু সারগর্ভ প্রস্তাব বলে মনে হচ্ছে না
মশা

2
@ গ্যাनेट: অন্যান্য উত্তরগুলি জ্ঞান স্থানান্তর এবং স্পটিং বাগগুলিকে সম্বোধন করে। এগুলি গুরুত্বপূর্ণ, তবে কোড পর্যালোচনার আরও অনেক কিছু রয়েছে।

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

2
@ জাগান এটি অন্যান্য উত্তরে উত্থাপিত পয়েন্টগুলির একটি ভিন্ন দিককে জোর দেয়। আপনি ছয় মাস আগে লিখেছেন যে আপনার নিজের কোড দ্বারা কি কখনও বিস্মিত হয়েছে? কোড পর্যালোচনা আপনাকে সেই প্রক্রিয়াটি ত্বরান্বিত করতে দেয়। আপনার সহকর্মী যদি আপনার কোডটি দেখে বিস্মিত হন তবে সমস্যাটি এখনও আপনার স্মৃতিতে তাজা থাকা সত্ত্বেও আপনি এটি স্পষ্ট করে বলতে পারেন।
200_সুচি

1
@ 200_সাক্সেস সম্ভবত তবে এই পয়েন্টটি যদি সত্যিই সেখানে থাকে তবে দেখায় সত্যিই খুব খারাপভাবে উপস্থাপিত হয়েছে। এমনকি আপনার মন্তব্যও এই "উত্তর" থেকে এটি আরও ভালভাবে যোগাযোগ করতে পরিচালনা করে। উল্লেখ করার দরকার নেই যে এটি কেবল পূর্বের মন্তব্যে যেটি নির্দেশিত হয়েছিল সেটির পুনরাবৃত্তি করেছিল যা সম্পর্কিত সম্পর্কিত প্রশ্নে এটি ব্যাখ্যা করা মূলত উত্তরকে বোঝায়
gnat

7

আমি দুটি দুর্দান্ত ক্ষেত্র যুক্ত করতে চাই যা অন্যান্য দুর্দান্ত উত্তরের দ্বারা আওতাভুক্ত নয়:

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

আরও ভাল কারণ হ'ল উন্নত সুরক্ষিত উন্নয়নের চর্চা। সুরক্ষিত বিকাশের লাইফসাইলে যথাযথ কোড পর্যালোচনার গুরুত্ব বোঝার জন্য কেবলমাত্র অ্যাপলের গোটো ব্যর্থ (কোডের একটি দুর্ঘটনাজনিত ডুপ্লিকেট লাইন) বা হার্টলেড বাগ (ইনপুট বৈধকরণের একটি প্রাথমিক ব্যর্থতা) এর দিকে নজর দেওয়া উচিত।

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