স্পষ্টতার জন্য কোডিং মান: কোড প্রতিটি লাইন মন্তব্য?


142

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

আমি ছাত্র কোডটিও গ্রেড করেছি যার কোনও মন্তব্য নেই এবং তাদের অবহেলার জন্য কেন তাদের চিহ্নিত করা উচিত তা দেখেছি।

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

আমি আরও বুঝতে পারি যে মন্তব্যে ব্যাখ্যা করা উচিত যে কোড কেন এটি করে, কীভাবে তা করে না।

এই সমস্ত দেওয়া কি এই ধারণাটি ক্যাপচার করে এমন ভাল কোডিং স্ট্যান্ডার্ড লিখতে পারা সম্ভব? যেগুলি সমকক্ষ পর্যালোচনায় প্রাসঙ্গিক হবে তবে এমন মাইন্ডলেস চেকলিস্ট ক্রিয়াকলাপে রূপান্তরিত করবে না যা নোট তৈরি করে তার চেয়ে বেশি সহায়ক নয়: "আপনি 42 লাইনে মন্তব্য করতে ভুলে গেছেন"।

একটি চেকলিস্টে লাইন হিসাবে বিবেচনা করার সময় এই নিয়মের যে ধরণের কোডের প্রয়োজন হতে পারে তার একটি উদাহরণ:

/* Display an error message */
function display_error_message( $error_message )
{
    /* Display the error message */
    echo $error_message;

    /* Exit the application */
    exit();
}

/* -------------------------------------------------------------------- */

/* Check if the configuration file does not exist, then display an error */
/* message */
if ( !file_exists( 'C:/xampp/htdocs/essentials/configuration.ini' ) ) {
    /* Display an error message */
    display_error_message( 'Error: Configuration file not found. Application has stopped');
}

যদি এটি কোনও মান নথিতে সঠিকভাবে প্রকাশ করা সম্ভব হয় এবং এটি সম্ভবত নাও হয় তবে আমি এই লাইনগুলি ধরে একটি ধারণা ক্যাপচার করতে চাই:

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


21
মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
ম্যাপেল_শ্যাফ্ট

32
কোড মন্তব্যগুলির জন্য "মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়" এমনকি ট্রুয়ার। :) এই /* Display an error message */মন্তব্যগুলি ভয়ঙ্কর এবং আসলে পঠনযোগ্যতার উপর প্রভাব ফেলে।
Andrea Lazzarotto

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

1
@ ডগ.ম্যাকফার্লেন আমি ভেবেছিলাম যে ভিএম এর পক্ষে উপস্থিত থাকা উচিত। অবশ্যই এটি ফাইল এবং ব্লক উভয় স্তরেই করে - rtfm-sarl.ch/articles/hide-comments.html !
মাইকেল ডুরান্ট

উত্তর:


171

মাইকেল ডুরান্টের উত্তর আইএমএইচও খারাপ নয়, তবে এটি আক্ষরিকভাবে প্রশ্নের উত্তর দিচ্ছে না (যেমন তিনি নিজেই স্বীকার করেছেন), তাই আমি একটি উত্তর দেওয়ার চেষ্টা করব যা এতে করে:

আমি আরও বুঝতে পারি যে মন্তব্যে ব্যাখ্যা করা উচিত যে কোড কেন এটি করে, কীভাবে তা করে না।

এই সমস্ত দেওয়া কি এই ধারণাটি ক্যাপচার করে এমন ভাল কোডিং স্ট্যান্ডার্ড লিখতে পারা সম্ভব?

স্পষ্টতই আপনি আপনার কোড পর্যালোচনার জন্য একটি চেকলিস্ট লিখতে পারেন , যেমন প্রশ্ন রয়েছে

  • "যদি কোনও মন্তব্য থাকে তবে কোডটি এটি কী করে তা কেন এটি ব্যাখ্যা করে?"
  • "কোডের প্রতিটি লাইন - এর প্রসঙ্গে - হয় যথেষ্ট স্ব-বর্ণনামূলক যে এটির জন্য কোনও মন্তব্যের প্রয়োজন নেই, বা যদি না হয়, তবে কি কোনও মন্তব্যটির সাথে এই ফাঁকটি বন্ধ করে দেওয়া হয়? অথবা (সম্ভবত) কোডটি কী তাই পরিবর্তন করা যায়? এটি আর মন্তব্য করার প্রয়োজন নেই? "

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

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


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

4
বুদ্ধিমান উত্তর। যদি আমরা কোডিংয়ের জন্য খাঁটি নিয়মগুলি খুঁজে পেতে পারি তবে আমাদের প্রোগ্রামারগুলির প্রয়োজন হবে না। আমরা ঠিক মেশিন কোড থাকতে পারে। এটা হতে পারে! :(

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

5
এটি কোনও ভিন্ন কোড দ্বারা রক্ষণাবেক্ষণের কোড নয়, কোনও কোডিংয়ের জন্য ভাল পরামর্শ । এমনকি আপনি যদি স্ক্রিপ্ট / প্রোগ্রাম ব্যবহার করে এমন একমাত্র ব্যক্তি হন তবে ভবিষ্যতে আপনি যাকে কোডটি এক বছরের মধ্যে সংশোধন করতে হবে তা স্পষ্টতার প্রশংসা করবে (এবং অস্বচ্ছ কোডটি বোঝার জন্য সময়টি সংরক্ষণ করা হবে)।
অ্যান্টনি জিওগিগান

5
আপনি কি আরও কিছু উদ্দেশ্যমূলকভাবে "বর্তমানে সর্বাধিক উচ্চতর উত্তর" সম্পাদনা করতে পারেন? প্রতিটি পাঠকই এই উত্তরগুলির ভোটের ইতিহাস জানতে পারবেন না।
candied_orange

151

মেজর অ্যান্টি-প্যাটার্ন কম স্বচ্ছতার সাথে দুর্বল মানের কোডের দিকে পরিচালিত করে

বিটিডব্লিউ পাঠক, শিরোনামটি মূলত "কোডের প্রতিটি লাইনকে মন্তব্য করেছিল?" এবং আপনি আমাদের মধ্যে অন্তর্ভুক্ত সহজাত প্রতিক্রিয়া কল্পনা করতে পারেন। আমি পরে আরও সঠিক শিরোনামে retitled।

প্রথমে, আপনার প্রশ্নটি পড়ে আমি ভেবেছিলাম, মন্তব্যগুলিতে ডুপ্লিকেট স্টাফ, তবে ঠিক আছে, যদি আপনার একাধিক লোকের পর্যালোচনার উপর পর্যাপ্ত কঠোরতা থাকে তবে ... তবে আবার: লোকেরা ভুল করে, অসঙ্গতিগুলি লক্ষ্য করতে ব্যর্থ হয় ইত্যাদি এবং সময়ের সাথে সাথে notice পার্থক্য থাকা শেষ হবে। প্রতিচ্ছবিতে আমি মনে করি সমস্যাটি আরও বড় is

বিকাশকারীরা আরও খারাপ কোড লেখার ঝোঁক রাখবে। তারা আরও গুপ্ত নাম এবং কাঠামো ব্যবহার করবে কারণ 'এটি মন্তব্যে ব্যাখ্যা করা হয়েছে - দেখুন!'

বিবেচনা:

living_room_set = tables + chairs.

এখন বিবেচনা করুন:

set = tbls+chrs # Make the set equal to the table plus the chairs

আপনার কাছে কেবল আরও ক্রিপ্টিক নাম এবং আরও অনেকগুলি পড়ার নয়, আপনাকে পিছনে পিছনেও দেখতে হবে, কোডটি দেখুন, একটি সেট কী? কোডে বাম দিকে তাকান, মন্তব্যগুলিতে ডানদিকে তাকান, টিবিএলগুলি কী, কোডের বাম দিকে তাকান, মন্তব্যগুলিতে ডানদিকে তাকান, ক্রিস কী হয়, মন্তব্যে ডানদিকে তাকান Yuch!

সারাংশ

আপনি যদি কোনও বিকাশকারী হিসাবে আপনার বর্তমান অবস্থাতে বাধ্য হন তবে কোনও মন্তব্য করার মান বিকাশ বা উন্নত করুন (প্রাক্তন সিওবিওএল প্রোগ্রামিং হিসাবে আমি অবশ্যই বড়গুলি দেখেছি!) তবে আপনার সময়, শক্তি এবং আবেগের বেশিরভাগ সময় ব্যয় করে মন্তব্য করার বিরুদ্ধে বিরোধিতা করছেন- আর্গুমেন্ট ব্যবহার করে প্যাটার্ন:

  • কোড এবং মন্তব্যগুলি একে অপরের সাথে সিঙ্কের বাইরে চলে যায় যখন কেবলমাত্র একটি পরিবর্তন করা হয়

  • মন্তব্যগুলি কোনও ব্যক্তি কী মনে করে তবে ভুল হতে পারে এবং এর ফলে বাগগুলি coverাকতে পারে তার বর্ণনা দিতে পারে

  • কোড পড়া শক্ত হয়ে যায়

  • ভাল কোড লিখতে শক্ত হয়ে যায়

  • আরও ক্রিপ্টিক নাম ব্যবহার করার প্রবণতা

  • কোড এবং মন্তব্যে পড়ার জন্য অতিরিক্ত অক্ষর

  • বিভিন্ন সম্পাদক বিভিন্ন স্টাইল ব্যবহার করেন

  • কেবল কোডিংয়ের চেয়ে উচ্চতর ইংরেজি ভাষার দক্ষতা প্রয়োজন

  • সময় এবং সংস্থান নেয় এবং দীর্ঘমেয়াদী মান থেকে বিয়োগ করে *

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

দুটি কঠিন সমস্যার মধ্যে একটি হল নামকরণ করা - মন্তব্যগুলিতে সমস্যাটি এড়িয়ে চলুন না।

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

* আগামীকাল কোড


8
আমি বিশ্বাস করি না আপনি প্রশ্নের উত্তর দিয়েছেন। প্রশ্নটি প্রতিটি লাইনে মন্তব্য করা নিয়ে নয়। এটি ডেভেলপারদের প্রতি লাইনে মন্তব্য করার কারণ ছাড়াই মন্তব্য করার কোডকে কীভাবে বলতে হয় তা জিজ্ঞাসা করছে।
hichris123

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

1
অন্যান্য কঠিন সমস্যা কি?
ডেভিড গ্রিনবার্গ

20
@ ডেভিডগ্রিনবার্গ ক্যাশে অবৈধকরণ এবং একের পর এক ত্রুটি
এরিক কিং

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

23

আমি মনে করি না যে কোনও কোডিং স্ট্যান্ডার্ড ডকুমেন্ট হ'ল এটি ইতিমধ্যে সাধারণ জ্ঞান যা নির্দিষ্ট করা যায়। কোডিং স্ট্যান্ডার্ডের উদ্দেশ্য হ'ল সমস্যাগুলির বিষয়ে দৃ cons়তা (এবং যুক্তি এড়ানো) গ্যারান্টি দেওয়া যেখানে যুক্তিসঙ্গত লোকেরা একমত হতে পারে না এবং কোনও একক সুস্পষ্ট সঠিক উত্তর নেই, যেমন নামকরণের কনভেনশন, ইনডেন্টেশন ইত্যাদি about

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

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


63
এই র‌্যাকেটে 40 বছরেরও বেশি সময় পরে আমি শিখেছি এমন অনেকগুলি বিষয়গুলির মধ্যে একটি হ'ল সাধারণ জ্ঞান মোটেই সাধারণ নয়।
জন আর স্ট্রোহম

10
সাধারণ জ্ঞানের মতো জিনিস নেই।
হোয়াটসাইম

1
in_pramramming no .. আসল বিশ্ব ওহ হ্যাঁ, তবে এটি সত্যিকারের বিশ্ব অভিজ্ঞতাগ্রহী জ্ঞানের জন্য একটি পদ
মাইকেল

@ জনআর.স্ট্রোহম: আমার অভিজ্ঞতা আপনার চেয়ে অনেক বেশি ইতিবাচক হয়েছে, তবে আমিও দেখেছি যে কীভাবে সাধারণ জ্ঞানের ব্যবহারটি নিয়ম প্রয়োগ করে যান্ত্রিকভাবে কার্যকরভাবে নিরুৎসাহিত করা যায়।
জ্যাকবিবি

আমি এই উত্তরের সাথে 99.9% চুক্তিতে আছি। কোডিং স্ট্যান্ডার্ড বলতে কোড পুনর্বিবেচনায় কোনও বিতর্ক হয় এমন জিনিসটিকে বিকাশকারীরা নির্দেশ করে বলে বোঝানো হয়। কোড পর্যালোচনা মানেই পণ্যটি যুদ্ধ না শুরু করে সমৃদ্ধ করা। কোডিং স্ট্যান্ডার্ড ছাড়াই কোড রিভিউ দ্বারা প্ররোচিত অনেক যুদ্ধ আমি দেখেছি। আমি সাহস করে বলতে পারি যে আপনি কোডিং স্ট্যান্ডার্ডের আইটেমগুলির চেকিং স্বয়ংক্রিয় করতে না পারলে এটি সেখানে হওয়া উচিত। একটি কোড পর্যালোচনা অন্য স্বল্প অভিজ্ঞ বিকাশকারীদের 'জ্ঞান' দেওয়ার সময়। ভেরিয়েবলের নামকরণ নিয়ে লড়াইয়ের সময় নয়। লিনাক্স / কার্নেল / জেন_ইনিট_সিপিও.সি লাইন 335.
অ্যান্ড্রু টি

19

এটা সম্ভব নয়. আপনি মূলত যা করার চেষ্টা করছেন তা ভাল রায়কে মেকানিকাইজ করার জন্য।

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

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


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

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

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

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

1
@ ওয়াটসিসনাম আমি বুঝতে পারছি এমন কেউ আছেন যে বুঝতে পেরে আমি খুব খুশি। আপনার প্রতিক্রিয়াগুলি আমি কখনও চেষ্টা করেছিলাম না তার চেয়ে আরও মার্জিত এবং সুনির্দিষ্টভাবে রচিত। বিবৃতিটি with systems that exist to justify and require themselves rather than being a means to an end to ensure quality productsহুবহু আমি যা চিত্রিত করার চেষ্টা করছিলাম। আমার জন্য আমার শব্দ খুঁজে বার করার জন্য আপনাকে ধন্যবাদ। আমি সত্যিই এটি বোঝাতে চাই। গুণগুলি উত্সাহিত করার ধারণাটি কোনও প্রক্রিয়া অনুসরণ করার ধারণা থেকে আলাদা করতে হবে কারণ তারা একই নয়। এজন্য আমাদের কিউএ, স্ট্যাকওভারফ্লো এবং খুব ক্ষমাশীল গ্রাহক রয়েছে।
অ্যান্ড্রু টি ফিনেল

14

হালনাগাদ

জোর দেওয়ার জন্য উদ্ধৃতিগুলিতে আমার প্রতিক্রিয়া:

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

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

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

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

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

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

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

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

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

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

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


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

আমাদের দুটি ধরণের মন্তব্য রয়েছে:

মেশিন রিডেবল কমেন্টস

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

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

আমি এমন কিছু করছি যা দেখতে পাগল দেখাচ্ছে, তবে আসলে তা নয়

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

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

মতামত নির্ভর করা যাবে না

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

এটি অ্যাসিনিন শোনাতে পারে তবে আমার সাথে সহ্য করুন। এই দুটি লাইনের কোনটি সত্যই গুরুত্বপূর্ণ?

// We don't divide by 0 in order to stop crashes.

return 1 / n;

এই উদাহরণে সমস্ত বিষয়টি হ'ল আমাদের 'এন' কী তা সম্পর্কে কোনও ধারণা নেই, 0 থাকার জন্য কোনও চেক নেই এবং সেখানে উপস্থিত থাকলেও, কোনও বিকাশকারীকে n = 00 এর পরে চেক স্থাপন করা থেকে বিরত রাখে না Thus সুতরাং মন্তব্যটি অকেজো এবং স্বয়ংক্রিয় কিছুই কখনও এটি ধরতে পারে না। কোনও মানক এটি ধরতে পারে না। মন্তব্যটি, যদিও বেশ সুন্দর (কারও কারও কাছে) পণ্যের ফলাফল নিয়ে কোনও ফল নেই।

গবেষণা বা পরীক্ষা চালিত উন্নতি

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

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

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

উপসংহার

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

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

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

মন্তব্যগুলির জীবন বাঁচানোর সাথে কোনও সম্পর্ক নেই। মন্তব্যগুলি মানুষের জন্য, মন্তব্যগুলি লেখার সময়ও মানুষ ভুল করে। মানুষের বিশ্বাস করবেন না। কিন্তু, মন্তব্য বিশ্বাস করবেন না। মন্তব্যগুলি আপনার সমাধান নয়।


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

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

1
"ক্র্যাশ বন্ধ করার জন্য আমরা 0 দ্বারা ভাগ করি না" মন্তব্যটিতে একটি অতিরিক্ত সমস্যা রয়েছে এটি "ক্রমে" বিভাগটি বিভাগের ক্রিয়নের ক্ষেত্রে বা তার অবহেলার ক্ষেত্রে প্রযোজ্য হলে তা ব্যাকরণগতভাবে পরিষ্কার নয়। আপনি যদি "... এর জন্য 0 দ্বারা বিভাজন এড়াতে" ব্যবহার করেন তবে আপনি এই অস্পষ্টতা এড়ান। :)
ওয়াইল্ডকার্ড

1
"ক্র্যাশগুলি থামাতে শূন্য দ্বারা ভাগ করবেন না" আসলে এটি লিখেছেন এমন ব্যক্তির মানসিকতা সম্পর্কে আমাকে অনেক কিছু বলে। আপনি ক্র্যাশ এড়ানোর জন্য কোড করবেন না! আপনি কোডটি যাতে কোডটি সঠিক হয় এবং ক্র্যাশ হয় না এটি সঠিক হওয়ার একটি ছোট্ট অংশ। ঔষধ পরিমাণ হিসাব উদ্বুদ্ধ করতে শূন্য দ্বারা ভাগ শেষ পর্যন্ত থাকে, তাহলে আপনি 99999 মত কিছু ডামি মান না ...
immibis

1
@ অ্যান্ড্রুটিফিনেল আমার অর্থ এই যে আপনি যদি কখনও কখনও শূন্য ত্রুটির দ্বারা বিভাগ পান তবে "যদি (বিভাজক == 0) <something> ফিরে আসে; // শূন্য দ্বারা বিভাগ এড়ানো" আপনার কোডটিকে আরও সঠিক করে না। পরিবর্তে আপনাকে কেন ডিভাইডারটি শূন্য এবং এটি ঠিক করতে হবে। কিছু অ্যালগরিদম এমনভাবে নকশা করা হয়েছে যাতে শূন্য বিভাজকটি অনিবার্য, তবে সেগুলি ব্যতিক্রম (এবং সেই ক্ষেত্রে আপনি "ফলাফলকে গণনা করতে পারবেন না") এর মান দিতে পারেন।
ইমিগ্রিস

12

আপনি মন্তব্য সম্পর্কে কথা বলার সময় দুটি ভিন্ন জিনিস আপনাকে বোঝায়। তারা একই নয় এবং পার্থক্যটি গুরুত্বপূর্ণ।

ডকুমেন্টেশন আপনাকে একটি টুকরো কোডের বহির্মুখী বিট - এর ইন্টারফেস সম্পর্কে জানায়।

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

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

ভাল ডকুমেন্টেশন সম্ভাব্য ভোক্তাকে কোডটি কখন, কখন এবং কীভাবে ব্যবহার করবে তা সিদ্ধান্ত নিতে দেয়।

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

অন্তর্নিহিত কোডের মধ্যে মন্তব্যগুলি সর্বদা পঠিত হয়।

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

# 'map' outperforms 'for' here by a factor of 10  

// This line works around an obscure bug in IE10, see issue #12053  

-- We are going to recursively find the parents up to and including the root node.
-- We will then calculate the number of steps from leaf node to root node.
-- We first use a WITH clause to get the ID of the root node.

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

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

তবে এটি এর চেয়েও খারাপ: প্রতিটি লাইনে মন্তব্য করা হলে একটি মন্তব্যের উদ্দেশ্য পরাজিত। মন্তব্যগুলি গোলমাল হয়ে ওঠে যা কোড পড়তে শক্ত করে তোলে: স্পষ্ট করার পরিবর্তে অস্পষ্ট। অধিকন্তু, নির্বিচার মন্তব্য করা সত্যই গুরুত্বপূর্ণ মন্তব্যগুলিকে স্পষ্ট করা শক্ত করে তোলে।

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

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


পাবলিক এপিআই ডকুমেন্ট একটি ভাল পয়েন্ট তবে আমি সত্যিই অবাক করা সিদ্ধান্তগুলি ব্যাখ্যা করতে পছন্দ করি। অন্তত বিস্মিত হওয়ার নীতির লঙ্ঘন যদি কমপক্ষে কোনও ন্যায়সঙ্গত হয়ে আসে তবে এটি খুব সুন্দর। +1
candied_orange

1
শব্দ হিসাবে বহিরাগত মন্তব্য জন্য +1। উচ্চ শব্দে সংকেত রাখুন।
sq33G

+1 বিশেষত একটি মন্তব্যের উদ্দেশ্যে যদি প্রতিটি লাইনে মন্তব্য করা হয় তবে পরাজিত হয়। খুব খারাপ এটি হতে পারে (এবং প্রায়শই ব্যবহৃত হয়) একেবারে মন্তব্য না করার অজুহাত হিসাবে ব্যবহৃত হয় তবে এটি যেভাবেই উল্লেখ করেছেন প্লাস কারণেই ঠিক ঠিক কারণ প্রতিটি লাইনে মন্তব্য করা থাকলে বেশিরভাগ মানুষ স্বয়ংক্রিয়ভাবে এবং বোধগম্যভাবে সমস্ত মন্তব্য উপেক্ষা করতে শুরু করবে ।
সান্টিবাইলার্স

10

আপনি কোনও মন্তব্য করার মানকে কোডাইফাই করতে পারবেন না, কারণ গুরুত্বপূর্ণ মন্তব্যটি আগে থেকে কী হবে তা আপনি জানেন না।

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

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

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

অপঠনযোগ্য কোডটি একটি নির্দিষ্ট পরিমাণে, অনিবার্য। কারণ লেখক প্রসঙ্গে ডুবে আছেন এবং আপনি এক্স, ওয়াই, বা জেড জানেন তবেই এটি সুস্পষ্ট কিছু দেখতে পাবে।

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


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

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

1
@ ডেভিডহ্যামেন: মন্তব্যটির জন্য এটি মানক নয়, এটি পর্যালোচনার জন্য একটি মানক। সমাধান হিসাবে আমি যা প্রস্তাব করতে যা করতে গিয়েছিলাম। আপনি এটি বলতে পারবেন না এটির একটি নির্দিষ্ট আকার থাকতে হবে, বা একটি নির্দিষ্ট বাক্য গঠন ব্যবহার করতে হবে বা এমনকি কার্যকরভাবে প্রথম স্থানে একটি মন্তব্যের প্রয়োজন (বা আপনি "একটিতে যুক্ত করুন" টাইপ মন্তব্য পেয়েছেন)। আপনি বলতে পারেন যে পর্যালোচককে অবশ্যই কোড এবং মন্তব্যে মন্তব্য করতে হবে। আপনি যেমনটি বলেছেন যে কোড পর্যালোচনা দ্বারা উত্থাপিত সমস্যাগুলি সমাধান করা দরকার। তবে এই এইচএসের পক্ষে খুব ভাল কাজ করার জন্য রিভিউর উপর। কোড এবং মন্তব্য যথেষ্ট কিনা তা কেবল পর্যালোচকই বিচার করতে পারবেন।
jmoreno

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

@ জোরমেনো - কোডিং স্ট্যান্ডার্ডগুলিতে মন্তব্য সম্পর্কে বিধি / নির্দেশিকা না রাখার অর্থ প্রোগ্রামারদের একাধিক উত্সের দিকে নজর রাখতে হবে - এবং পর্যালোচনা ফিরে না আসা পর্যন্ত কোথায় তাকানো হবে তা তারা জানেন না মন্তব্যগুলি নিম্নমানের। কোডিং স্ট্যান্ডার্ডের প্রত্যেকটি স্বয়ংক্রিয়ভাবে পরিবর্তনযোগ্য হওয়া উচিত তা ভাবার জন্য এটি একটি ভুল। অর্থপূর্ণ নামের বিধিগুলি উদাহরণস্বরূপ, স্বয়ংক্রিয়ভাবে চালিত হয় না। আপাতত এখন না. উদাহরণস্বরূপ, x, y, এবং z, বা i, jএবং kবেশ অর্থপূর্ণ নাম হতে পারে এক একটি জার্নাল কাগজ যে তার সূত্রে ঠিক নামগুলো ব্যবহৃত উপর ভিত্তি করে একটি বৈজ্ঞানিক অ্যালগরিদম বাস্তবায়ন করছে।
ডেভিড হামেন

9

কোড প্রতিটি লাইন মন্তব্য? কোন

অন্যদের যে নিয়মের বিষয়ে আপনি কথা বলছেন তার উদ্দেশ্য তা এড়ানো অবিকল।

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

যদি আপনি পুরো কোডটি স্ব-ব্যাখ্যামূলক বলে মন্তব্য করেন তবে কোনও অতিরিক্ত তথ্য দিয়ে আপনি পড়ার পরিমাণ দ্বিগুণ করেন। আমি নিশ্চিত নই যে এ জাতীয় অপ্রয়োজনীয়তার মূল্য পরিশোধ হবে কিনা। একটি পর্যালোচক কল্পনা করতে পারেন যে 42 বলে " display_error" "মন্তব্যটি" সতর্কতা প্রদর্শন করে "বলেছে says তবে কোডের পরিবর্তনটি কল্পনা করুন। আপনার এখন ঠিক করার দুটি জায়গা রয়েছে। এটি পরিষ্কার হয়ে যায় যে এই স্টাইলের কপির-পেস্ট নেতিবাচক রয়েছে।

আমি বলব যে সর্বোত্তমভাবে কোডটির ডকুমেন্টেশন ব্যতীত কোনও মন্তব্যের দরকার নেই।

এমন শৈলীগুলি রয়েছে যা সম্পূর্ণ বিপরীত হয়, যদি আপনার লাইনটি সম্পর্কে সন্দেহ থাকে তবে তা:

  1. কোডটি অত্যন্ত জটিল এবং কোডটির অংশের অর্থগত অর্থ সহ একটি নাম সহ একটি ফাংশনে রিফ্যাক্ট করা উচিত। এটি জটিল ifবা অ্যালগরিদমের অংশ হোক। (বা একটি চতুর লিনকিউ ওয়ান-লাইনার)

  2. যদি এটি সরল করা যায় না, আপনি ভাষার পর্যাপ্ত প্রতিভা জানেন না।

(আমি ব্যক্তিগতভাবে কঠোর নো-মন্তব্য রুলের ভক্ত নই, তবে আমি এটির পক্ষে একটি ভাল প্রাথমিক মানসিকতা হিসাবে পাই।)

এই সমস্ত দেওয়া কি এই ধারণাটি ক্যাপচার করে এমন ভাল কোডিং স্ট্যান্ডার্ড লিখতে পারা সম্ভব?

প্রক্রিয়া হিসাবে। আমাদের মানটি পর্যালোচককে যথেষ্ট ক্রেডিট দিয়েছে। ধরে নিচ্ছি যে তারা দূষিত নয় এটি ভাল কাজ করে।

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

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

এছাড়াও, কোনও রহস্য নেই । যদিও আমরা একটি ছোট গ্রুপ ছিল। 5 এর দলে sensকমত্য পাওয়া সহজ।


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

3
@ অ্যান্ড্রুটিফিনেল আপনার নামকরণের যে কোনও প্রোগ্রামিং উপমাতে কোড অনুসরণ করা অসম্ভব লিখতে পারি।
candied_orange

2
@ অ্যান্ড্রুটিফিনেল ভাল, আমি বিনয়ের সাথে একমত হব না। " আদেশের জন্য কোড পর্যালোচনাগুলি ব্যবহার করে ", আপনি কোথায় থেকে এঁকেছেন তা আমি জানি না। আমি ভেরিয়েবল সঙ্গে কোডের উপর কাজ করতে চান না i, j, kসব জায়গায় বেশি পরে মূল লেখক শোধবোধ। "মানব" জিনোমের বিষয়ে আপনার বক্তব্য আমি বুঝতে পারি না। আমি সন্দেহ করি এমন একটি ভাষা আছে যেখানে একক বিবৃতি দেওয়া হয়, বা দুটি বোঝা খুব কঠিন। যেমনটি আমি বলেছি, আমি জটিল ifগুলি এবং LINQএক-লাইনার দেখেছি । সেগুলি হয় অর্থহীন অর্থপূর্ণ নামে মন্তব্য করা বা রিফ্যাক্টর করা যেতে পারে, আমার ধারণা এটি আপনার "ভাল মন্তব্য"।
luk32

3
@ luk32 আমি দ্বিমত করার অধিকারকে সম্মান করি। ইন্টেরেশন ভেরিয়েবলগুলি আমার মতে প্রাসঙ্গিকভাবে সুস্পষ্ট। আমি যখন আপনার বক্তব্যটির অনুভূতি বুঝতে পেরেছি তখনও আমি বিশ্বাস করি যে প্রচুর অনুশীলন রয়েছে যা এই অনুভূতিটিকে চূড়ান্ত দিকে নিয়ে যায়। আমাদের কি সত্যিই এমন কোডের দরকার আছে যা পড়তে পারে: for (int indexForCurrentDatabaseRow = 0; indexForCurrentDatabaseRow < currentUserRecordSetResults.length; indexForCurrentDatabaseRow = indexForCurrentDatabaseRow + 1)বনাম for (int i = 0; i < results.length; i++)? সম্ভবত এটি পছন্দ এবং / অথবা কোড দেখার জন্য সময় ব্যয় করার বিষয়। অতিরিক্ত ভার্বোজের নামগুলি আমার কাছে গন্ধ পায়।
অ্যান্ড্রু টি ফিনেল

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

9

প্রশ্নটি:

এই সমস্ত দেওয়া কি এই ধারণাটি ক্যাপচার করে এমন ভাল কোডিং স্ট্যান্ডার্ড লিখতে পারা সম্ভব? এগুলি যে পিয়ার পর্যালোচনায় প্রাসঙ্গিক হবে তবে এমন মাইন্ডলেস চেকলিস্ট ক্রিয়াকলাপে রূপান্তরিত করবে না যা নোট তৈরি করে তার চেয়ে বেশি সহায়ক নয়: "আপনি 42 লাইনে মন্তব্য করতে ভুলে গেছেন"।

মন্তব্যগুলি ভাষা সম্পর্কে পাঠককে শিক্ষিত করার চেষ্টা করা উচিত নয়। একজন পাঠকের মনে করা উচিত যে ভাষাটি লেখকের চেয়ে ভাল, তবে লেখকের চেয়ে অনেক কম প্রসঙ্গের সাথে।

এই কোডটির একটি পাঠক, আপনার উদাহরণ থেকে জানা উচিত যে exit()অ্যাপ্লিকেশনটি প্রস্থান করবে - এইভাবে মন্তব্যটি অপ্রয়োজনীয় হয়ে উঠবে:

/* Exit the application */
exit();

অপ্রয়োজনীয় মন্তব্যগুলি ডিআরওয়াই লঙ্ঘন, এবং কোডে পরিবর্তনগুলি প্রয়োজনীয়ভাবে মন্তব্যগুলিতে প্রচার করে না, এমন মন্তব্য রেখে যা কোডটি আসলে কী করছে তা প্রতিফলিত করে না।

তবে, এমন মন্তব্যগুলি যা আপনাকে বোঝায় যে আপনি কেন কিছু করছেন তা মূল্যবান হতে পারে - বিশেষত যদি আপনি কোডটিতে সহজেই অর্থটি যোগাযোগ করতে না পারেন।

পাইথনের পিইপি 8 (সিপিথন স্ট্যান্ডার্ড লাইব্রেরিতে পাইথনের স্টাইল গাইড) ইনলাইন মন্তব্যগুলির জন্য নিম্নলিখিত গাইডলাইন সরবরাহ করে:

কিছুটা হলেও ইনলাইন মন্তব্য ব্যবহার করুন।

একটি ইনলাইন মন্তব্য একটি বিবৃতি হিসাবে একই লাইনে একটি মন্তব্য। ইনলাইন মন্তব্যগুলি বিবৃতি থেকে কমপক্ষে দুটি ফাঁক করে পৃথক করা উচিত। তাদের একটি # এবং একটি একক স্থান দিয়ে শুরু করা উচিত।

ইনলাইন মন্তব্যগুলি অপ্রয়োজনীয় এবং বাস্তবে বিভ্রান্তিকর যদি তারা স্পষ্টভাবে বলে থাকে। এটি করবেন না:

x = x + 1                 # Increment x

তবে কখনও কখনও, এটি দরকারী:

x = x + 1                 # Compensate for border

এই জাতীয় উদাহরণ দেওয়া, আমি ব্যক্তিগতভাবে আরও একধাপ এগিয়ে যেতে পছন্দ করি এবং এই মন্তব্যটিও সরিয়ে দেওয়ার চেষ্টা করব would উদাহরণস্বরূপ, আমি এখানে পৌঁছতে পারে:

border_compensation = 1
compensated_x = x + border_compensation

আপনার কোডটি স্ব-ডকুমেন্টিং করা কোনও নতুন ধারণা নয়

আসল প্রশ্নে ফিরে যান:

এই সমস্ত দেওয়া কি এই ধারণাটি ক্যাপচার করে এমন ভাল কোডিং স্ট্যান্ডার্ড লিখতে পারা সম্ভব?

আমি বিশ্বাস করি যে পিইপি 8 নির্দেশিকা এবং উদাহরণটি একটি ভাল কোডিং মান প্রদর্শন করে যা এই ধারণাটি ধারণ করে। তাই হ্যাঁ, আমি বিশ্বাস করি এটি সম্ভব।


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

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

4

আমি মনে করি আপনি যখন এই ধরণের মন্তব্য দেখেন এবং আমি নিজে মাঝে মাঝে এইভাবে লিখি, কারণ লেখক মন্তব্যগুলিতে মন্তব্যটি লিখেছেন এবং তারপরে প্রতিটি মন্তব্যে গিয়ে প্রয়োগ করে চলেছেন।

যদি আমাদের কোনও কোডিং স্ট্যান্ডার্ড লিখতে চ্যালেঞ্জ করা হয় যা কোড দেয় যা এটির কার্যকারিতাটির চেয়ে তার প্রয়োজনীয় কার্যকারিতার দিক থেকে বোঝা যায় (যাতে ত্রুটিগুলি চিহ্নিত করা যায়) তবে আমরা কীভাবে স্পেসিফিকেশনগুলি সংজ্ঞায়িত, ডকুমেন্টেড এবং এর সাথে লিঙ্কযুক্ত তা নিয়ে কথা বলছি চূড়ান্ত পণ্য?

সম্পাদনা করুন ----

শুধু নির্মল. আমি বনাম টিডিডি বনাম ইউনিট পরীক্ষার মন্তব্যে যাচ্ছি না যা সেরা। অথবা প্রতি লাইনে মন্তব্য করার পরামর্শ দেওয়া ভাল / খারাপ

আমি কেবল একটি কারণ প্রস্তাব করছি যা আপনি উদাহরণে মন্তব্য করার স্টাইলটি দেখতে পাচ্ছেন।

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

অর্থাত্ মন্তব্যগুলি উদ্দেশ্যটির কোডটি ব্যাখ্যা করার জন্য যা একটি অনুমান কী


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

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

6
আমি বিশ্বাস করি tdd এর পূর্বাভাসও দেয়
ইভান

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

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

4

এই সমস্ত দেওয়া কি এই ধারণাটি ক্যাপচার করে এমন ভাল কোডিং স্ট্যান্ডার্ড লিখতে পারা সম্ভব? এগুলি যে পিয়ার পর্যালোচনায় প্রাসঙ্গিক হবে তবে এমন মাইন্ডলেস চেকলিস্ট ক্রিয়াকলাপে রূপান্তরিত করবে না যা নোট তৈরি করে তার চেয়ে বেশি সহায়ক নয়: "আপনি 42 লাইনে মন্তব্য করতে ভুলে গেছেন"।

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

আমার # 1 বিধিটি হল "সুস্পষ্টভাবে দলিল করবেন না।" # 2 বিধিটি হল "স্পষ্ট কোড লিখুন"।

সুরক্ষা-সমালোচনামূলক কোডের জন্য (যা আমাকে কখনই কাজ করতে হয়নি, Godশ্বরকে ধন্যবাদ জানায়), এটি প্রয়োজনীয় তবে প্রথম পর্যায়ে পর্যাপ্ত কোথাও নেই। এমনকি কোন ভাষা বৈশিষ্ট্যগুলি এড়িয়ে চলা উচিত তা বাধ্য করতে এমনকি নেমে আসতে পারে (আমি একাধিক স্ট্যান্ডার্ড বাধ্যতামূলক দেখেছি "আপনি scanf( "%s", input ); কোনও কারণে ব্যবহার করবেন না ")।


স্পষ্টতই দর্শকের চোখে পড়ে। এবং সময়সীমার উপর নির্ভর করে পরিবর্তনগুলি।
টনি এনিস

3

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

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

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

সুতরাং, এটি এমন লাইন নয় যা মন্তব্য করা উচিত তবে কোডের বড় অংশ। কোডের প্রতিটি অংশে মন্তব্য করা উচিত? নং হ্যারল্ড আবেলসন বলেছিলেন যে " লোকদের পড়ার জন্য প্রোগ্রাম অবশ্যই লেখা উচিত, এবং ঘটনাক্রমে কেবল মেশিনগুলি চালিত করার জন্য "। তবে মন্তব্যগুলি কেবল লোকেরা পড়ার জন্য - মেশিনটি সেগুলি কার্যকর করে না। যদি আপনার কোডিং মানগুলি প্রতিটি লাইন / পিস-অফ-কোডে অপ্রয়োজনীয় মন্তব্যগুলি লিখতে বাধ্য করে তবে আপনি কেবল বিকাশকারীকে তাদের লেখার জন্য বোঝা দিচ্ছেন না - আপনি সেই বিকাশকারীদেরও বোঝা করছেন যা তাদের পড়তে হবে !

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


1
গুরুত্বপূর্ণ মন্তব্যগুলি মিস করুন: +1। যে বাক্যটি শুরু হয়: "তারা বর্ণনা করে না" এটি অনুসরণ করা আরও সহজ করার জন্য কিছু পুনর্গঠন ব্যবহার করতে পারে।

3

IMHO এটি উভয় করা উচিত। প্রতিটি লাইনে মন্তব্য করা নিরীহ, কারণ আপনি লাইনের সাথে সজ্জিত হন

  i++;    /* Increment i */

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

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


2
ডোজিজেন মন্তব্যের জন্য +1: এটি আমার কোডে ডক্সিজেন "ডকুমেন্টেশন" অন্তর্ভুক্ত করার জন্য আমার আপত্তি; 95% সময় কেবল এটি ফাংশন স্বাক্ষর থেকে ইতিমধ্যে স্পষ্ট কি পুনরাবৃত্তি করে। আমিও, এমন একটি ডোজিজেন ডকুমেন্টেশন দেখিনি যা এখনও মূল্যবান। এই মন্তব্যগুলি লেখার সময়টি তিনবার নষ্ট করে: একবার মন্তব্যগুলি লেখার জন্য, একবারে সেগুলি আবার পড়তে এবং একবার একবার বাসি মন্তব্যের সামগ্রী দ্বারা তৈরি সমস্যাগুলি ডিবাগ করা।
মাস্টার

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

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

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

2

ফ্লো চার্ট ফিরিয়ে আনার সময়! (সত্যিই নয় তবে এক মিনিটের জন্য স্তব্ধ)

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


আমি আপনাকে জানাতে দুঃখিত যে ফ্লোচার্টগুলি কখনই যায়নি।
পি

কোডের তুলনায় ভালো মন্তব্যগুলি বিমূর্ততার বিভিন্ন স্তরে । শুনতে শুনতে!
candied_orange

1
যদিও এটি শালীন পরামর্শ হতে পারে, সম্ভবত একটি বাক্য বাক্য বাদে, যে প্রশ্নটি জিজ্ঞাসা করা হয়েছিল, সেটির দিকে এটি মিলবে বলে মনে হয় না।
ব্রায়ান ওকলে

0

আমি যেমনটি বলেছি প্রশ্নের উত্তর দেব:

এই সমস্ত দেওয়া কি এই ধারণাটি ক্যাপচার করে এমন ভাল কোডিং স্ট্যান্ডার্ড লিখতে পারা সম্ভব?

হ্যাঁ. WYSIWYG ওয়েবসাইট। একটি ভাল কোডিং মান আক্ষরিক অর্থে " নিম্নলিখিত কোডটি কী করে এবং কেন " তা পাঠকের কাছে পরিষ্কার clear

অন্য কথায়, কোড পাঠযোগ্যতার সম্পর্কে আমার কোড পর্যালোচনাগুলি আক্ষরিক অর্থে, 1-1, এর মানসিক অবস্থা থেকে উদ্ভূত হয়

আমি, একজন পাঠক হিসাবে (এখনও আরও ভাল, ন্যূনতম মান হিসাবে, কম অভিজ্ঞ কিন্তু যুক্তিযুক্ত পাঠকের মানসিক মডেল) নীচের কোডের উদ্দেশ্য বা কাজ করার পদ্ধতিটি বুঝতে পারি না

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

এটি "আপনি অর্থহীন মান অনুসরণ করেন নি" থেকে "আপনার কোডটিতে একটি নির্দিষ্ট পাঠযোগ্যতার ঘাটতি রয়েছে যা ব্যবহারিক সমস্যার দিকে পরিচালিত করে " এ থেকে বক্তৃতাটি স্থানান্তরিত হয় ।

একটি দ্বিতীয় স্ট্যান্ডার্ড যা স্পষ্ট করে তৈরি করা দরকার তা হ'ল "2am জরুরি পরীক্ষা"।

আপনার ব্যাকআপ, যিনি এই কোডটি নিয়ে অভিজ্ঞ নন, আপনি যখন 2 ঘন্টা উত্পাদন জরুরি সেতু কল করার সময় কোডটি ডিবাগ করার সময় সমস্যাটি কী তা খুঁজে বের করতে পারেন, যখন আপনি কোনও সেল ফোন ছাড়াই চিলিয়ান অ্যান্ডিসে ছুটিতে আছেন?

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


0

এই উত্তরটি বেশিরভাগ বিষয়কে কভার করেছিল, তবে একটি গুরুত্বপূর্ণ বিষয় রয়েছে।

আমি লাইনগুলি বরাবর একটি ধারণা ক্যাপচার করতে চাই: কোডের প্রতিটি লাইন, ক্রম, বিবৃতি, বিভাগ, কাঠামো, ফাংশন, পদ্ধতি, শ্রেণি, প্যাকেজ, উপাদান, ... এর জন্য একটি মন্তব্য বিবেচনা করুন।

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


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

@ জামেস্কেফ হ্যাঁ, যখন অর্ধেক কার্যগুলি নথিভুক্ত করা হয় না, এবং অন্যান্য অর্ধেকগুলি খারাপভাবে। তবে doxygen বেশ ভাল ডকুমেন্টেশন তৈরি করতে পারেন অভিমানী ডেভেলপারদের সঠিকভাবে তাদের কার্যাবলী ক্লাস, ইত্যাদি মন্তব্য,
BЈовић

-1

বিদ্যমান উত্তরগুলির মধ্যে অনেকগুলি ভালভাবে বিশদযুক্ত, তবে আমি উত্তর দেওয়া জরুরী অনুভব করেছি:

... [মন্তব্য] যা পিয়ার রিভিউতে প্রাসঙ্গিক হবে তবে নির্বোধ চেকলিস্ট ক্রিয়াকলাপে পরিণত হবে না ...

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

বলা হচ্ছে, এটি বিকাশকারীগণ কী কী সরঞ্জামগুলি ব্যবহার করেন তার বিষয়বস্তু এবং এ জাতীয় সফ্টওয়্যার দ্বারা ব্যবহৃত সমস্ত মন্তব্য একে অপরের মতো কার্যকর নয়

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