মন্তব্যগুলিতে টোটোলজি কীভাবে মোকাবেলা করবেন? [বন্ধ]


54

মাঝে মাঝে আমি নিজেকে পরিস্থিতিতে দেখতে পাই যখন কোডের যে অংশটি আমি লিখছি সে অংশটি (বা মনে হয় ) এতটাই স্বতঃস্পষ্ট যে এর নামটি মূলত একটি মন্তব্য হিসাবে পুনরাবৃত্তি হবে:

class Example
{
    /// <summary>
    /// The location of the update.
    /// </summary>
    public Uri UpdateLocation { get; set; };
}

(সি # উদাহরণ, তবে দয়া করে প্রশ্নটিকে ভাষা-অজ্ঞাস্তিক হিসাবে উল্লেখ করুন)।

এর মতো মন্তব্য অকেজো; আমি কি ভুল করছি? এটি কি নামের পছন্দটি ভুল? আমি কীভাবে এর মতো অংশগুলি আরও ভাল করে মন্তব্য করতে পারি? আমি কি এই জাতীয় জিনিসের জন্য মন্তব্যটি এড়ানো উচিত?


8
দ্রষ্টব্য: আমি "আপডেটের অবস্থান "টিকে খুব অস্পষ্ট হিসাবে বিবেচনা করব যদি না এটি" আপডেট "কী তা স্ফটিক পরিষ্কার না হয়। সিস্টেমটি কি ইউআরআই এর চেয়ে অন্য ধরণের ইউআরআই সমর্থন করে?

34
return result # returns result
লুਕਾਸ স্টেজস্কাল

27
মন্তব্যে টাউটোলজি মোকাবেলা করার উপায় হ'ল মন্তব্যে টাউটোলজি মোকাবেলা করার উপায়। (এটি একটি মন্তব্য))
রেক্স কের

29
এটি আসলে কোনও মন্তব্য নয়, এটি আসলে একটি মন্তব্য আকারে লিখিত ডকুমেন্টেশন । কোড মন্তব্যগুলিকে ইনলাইন করার চেয়ে পৃথক বিধি এপিআই ডকুমেন্টেশনে প্রয়োগ করে।
কোডি গ্রে

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

উত্তর:


13

বেশিরভাগ প্রকল্পে আমি কাজ করি, প্রতিটি একক শ্রেণীর সদস্যের উপর বিস্তারিত মন্তব্য লেখার জন্য উল্লেখযোগ্য পরিমাণ সময় নেই isn't

এর অর্থ এই নয় যে মন্তব্যের জন্য সময় নেই; বিপরীতে, টোটোলজিকাল মন্তব্যের জন্য প্রচুর সময় রয়েছে যা যা মন্তব্য করা হচ্ছে তার পুনরায় সংস্করণ ফিরিয়ে দেয়। তারা একটি সূচনা পয়েন্ট হিসাবে দুর্দান্ত কাজ ।

বিশেষত ভিজুয়াল স্টুডিওর ইন্টেলিসেন্সের সাথে মতামতের ব্যবহার দেওয়া , ক্ষেত্র সম্পর্কে অল্প কিছুটা তথ্য দিয়ে শুরু করা ভাল ধারণা:

class Example
{
    /// <summary>
    /// The location of the update.
    /// </summary>
    public Uri UpdateLocation { get; set; };
}

এবং তারপরে আপনি কোড চালিয়ে যাওয়ার সময় , যখন আপনি মনে করতে পারবেন না UpdateLocationযে আপডেটটি হয়েছিল সে স্থানটি ছিল বা আপডেটটি যে স্থানে পাঠানো হচ্ছে তখন আপনাকে কোডটি আবার দেখতে হবে। এটি এই সময়ে আপনার অতিরিক্ত তথ্য যুক্ত করা উচিত:

class Example
{
    /// <summary>
    /// The Uri location where the update took place.
    /// </summary>
    public Uri UpdateLocation { get; set; };
}

যদি কখনও কোনও প্রোগ্রামার আপনাকে কোনও ক্ষেত্রের বিশদ সম্পর্কে জিজ্ঞাসা করে তবে সেই তথ্য দিয়ে মন্তব্যগুলি আপডেট করুন:

সংরক্ষণের জন্য কী ধরণের আপডেট Example.UpdateLocationব্যবহার করা উচিত ?

class Example
{
    /// <summary>
    /// The Uri location where the Foo update took place.
    /// </summary>
    public Uri UpdateLocation { get; set; };
}

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

এবং ঠিক প্রোগ্রামিংয়ের মতোই, আপনার মন্তব্যগুলি কোথাও থেকে শুরু করতে হবে। টোটোলজিকাল মন্তব্যগুলি মন্তব্যের Hello World!মতামত, আপনি যেমন ডকুমেন্টেশন রাইটিং এবং আপডেট করার অনুশীলন করেন, আপনার প্রারম্ভিক ডকুমেন্টেশন আরও বেশি স্থিতিস্থাপক হয়ে উঠবে।


প্রকৃতপক্ষে বিকল্প মন্তব্য দেওয়ার জন্য একমাত্র ব্যক্তি হওয়ার জন্য +1; বরং কেবল টোটোলজিক্যাল উত্তরগুলি।
ইয়ান বয়ড

এটি আসলে এখন পর্যন্ত সেরা উত্তর।
রোল্যান্ড টাপ

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

1
@ রোল্যান্ডট্যাপ, আপনি কোথা থেকে এসেছেন তা আমি পুরোপুরি বুঝতে পেরেছি। এবং আমি সম্পূর্ণরূপে একমত। সমস্যাটি আমি যেটা দেখছি তা হ'ল অনেক প্রোগ্রামার মন্তব্য এবং ডকুমেন্টেশনকে এমন কিছু হিসাবে দেখে যা কোডটি সম্পূর্ণ হওয়ার পরে এবং শিপিংয়ের জন্য প্রস্তুত হওয়ার পরিবর্তে ঘটে থাকে, কোডের সাথে বিকাশ প্রক্রিয়াটির অংশ হিসাবে ঘটে এমন কোনও কিছু না করে, বাগ ট্র্যাকিং এবং সহায়তা ঘন্টা প্রয়োজন বাকী কোড সহ।
zzzzBov

54

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

আমি অনুপ্রেরণার জন্য লিটারেট প্রোগ্রামিং অনুশীলনটি একবার দেখার পরামর্শ দিই


+1 - এই উত্তর! আমাদের "ভেরিয়েবলগুলি ঘোষণা করুন", "বর্ধন কাউন্টার" (একটি লুপে) ইত্যাদির মতো মন্তব্যগুলির দরকার নেই
ওজ

সুতরাং ওপির উদাহরণে, ভাল মন্তব্যটি কী হবে?
স্টিঞ্জ করুন

4
@ স্টিজন, আমি জানি না - এটি কোড থেকে অনুপস্থিত (স্পষ্টতই) অনুপস্থিত। এমন কিছু যা কেবল কোডের লেখক এর উদ্দেশ্য এবং সীমাবদ্ধতা সম্পর্কে জানেন।
এসকে-যুক্তি

সম্ভবত কিছু মন্তব্য // লেভেলঅফট্যাক অনুসারে উত্সাহিতকারীদের আপডেট দেয় (ইউআরএল হিসাবে পাস করা হয়েছে)
উলিভিরাজর

15
একটি মন্তব্যের উত্তর দেওয়ার সবচেয়ে গুরুত্বপূর্ণ প্রশ্নের উত্তর হ'ল " ডাব্লুটিএফ? "
নট 101

53

মন্তব্যগুলিতে কোডটি বর্ণনা করা উচিত , এটির সদৃশ নয়। এই শিরোনামের মন্তব্যটি কেবল সদৃশ। ছেড়ে দাও।


17
+1: আমি মনে করি আপনি কী বলতে চাইছেন তা আমি বুঝতে পেরেছি, তবে আপনি যে বলেছিলেন সেটার সাথে আমি একমত নই :-) যতদূর সম্ভব কোডের কোড বর্ণনা করা উচিত, যেখানে মন্তব্যগুলি আপনার যুক্তি বর্ণনা করবে।
ক্রামেই পুনরায় ইনস্টল করুন মনিকা

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

6
@ এসকে-যুক্তি: আমি একমত নই একটি দীর্ঘ পদ্ধতি হ'ল একটি স্বল্প পদ্ধতির তুলনায় স্ব-বর্ণনামূলক যা নামী একটি সাব্রুটাইনগুলিকে বলে।
ক্রমিই পুনর্নির্মাণ মনিকা

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

2
@ এসকে-যুক্তি, ক্রামি যা বলে তার অর্থ: "কোডটি নিজে পড়তে ও বুঝতে সহজ হওয়া উচিত" এবং আপনি যে সমস্ত গ্রাফ উল্লেখ করছেন সেগুলি তার বক্তব্যগুলির মধ্যে পড়ে: "মন্তব্যগুলিতে আপনার যুক্তি বর্ণনা করা উচিত"
শাহবাজ

36

তাদের ছেড়ে দিন!

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

তাদের রাখুন!

আপনার উদাহরণটি এই নিয়মের দুটি ব্যতিক্রম চিত্রিত করে:

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

দ্বিতীয়ত, সি # তে "///" এমন একটি মন্তব্য নির্দেশ করে যা ডকুমেন্টেশনগুলি স্বয়ংক্রিয়ভাবে তৈরি করতে ব্যবহৃত হয়। আইডিই এই মন্তব্যগুলি সরঞ্জাম-টিপসগুলিতে ব্যবহার করে এবং এমন একটি সরঞ্জাম রয়েছে (স্যান্ডক্যাসল) যা এই ফাইলগুলি থেকে এই মন্তব্যগুলি থেকে সহায়তা ফাইল তৈরি করতে পারে। সেই হিসাবে, এই মন্তব্যগুলি সন্নিবেশ করার পক্ষে যুক্তি রয়েছে এমনকি যদি তারা নথির যে পদ্ধতিগুলি নথিভুক্ত করে তাদের ইতিমধ্যে বর্ণনামূলক নাম থাকে। তারপরেও, তবে অনেক অভিজ্ঞ বিকাশকারী তথ্যের নকল করতে ভ্রান্ত হবেন। যার জন্য ডকুমেন্টেশন উদ্দেশ্যযুক্ত তাদের সিদ্ধান্ত নেওয়া উচিত factor


এটি সেরা উত্তর। আপনি উদাহরণ শ্রেণিটি ব্যবহার করে যখন সম্পত্তিটি ব্যবহার করবেন ঠিক তখন কী কী সম্পত্তি ব্যবহার করা হবে তা নির্ধারণ করতে সক্ষম হওয়া উচিত।
অ্যান্ডি

এই পরিস্থিতিতে আমি চেষ্টা করি (এবং প্রায়শই ব্যর্থ হয়), কিছু অতিরিক্ত সামগ্রী সরবরাহ করার জন্য কমপক্ষে <remarks/>বা আরও <see/>কিছু যোগ করতে। <summary/>এখনও সদৃশ হয়, কিন্তু মন্তব্য সামগ্রিক সম্পূর্ণ অকেজো নয়।
আর্নলেমলেস

20

"মন্তব্যগুলি লিখবেন না" প্রতিক্রিয়াগুলির সাথে আমি দৃ strongly়ভাবে একমত নই। কেন? আপনার উদাহরণটি কিছুটা পরিবর্তন করে আমাকে নির্দেশ করুন।

public Uri UpdateLocation ();

সুতরাং এই ফাংশনটি কি করে:

  • এটি "আপডেট অবস্থান" ফেরত দেয়? অথবা
  • এটির অবস্থানটি "আপডেট" করে নতুন স্থানটি ফেরত দেয়?

আপনি দেখতে পাচ্ছেন যে কোনও মন্তব্য ছাড়াই অস্পষ্টতা রয়েছে। একটি নতুন কমার সহজেই ভুল করতে পারে।

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


4
আমি মনে করি না যে কেউ পরামর্শ দিচ্ছেন তারা কোনও মন্তব্য লিখবেন না। বেশিরভাগ / সবাই "উপযুক্ত মন্তব্য লিখুন" বলছেন, যা আপডেটলোকেশন উদাহরণটির আওতায় আসবে।
ওজ

16
Uri UpdateLocation()কোড পর্যালোচনা দ্বারা প্রত্যাখ্যান করা হবে এবং হয় Uri GetUpdateLocation()বা হয় void UpdateLocation()
অবাক

4
@ ওভাকার: সংবেদন সহ একমত, তবে এটি একটি সি # সম্পত্তি হিসাবে (প্রাপ্ত এবং সেট স্বয়ংক্রিয়ভাবে সংশ্লেষিত হয় এবং একই নাম থাকে) নামকরণের GetUpdateLocationফলে কোডের মতো ফলাফল হয় GetUpdateLocation = somelocationLocationOfUpdateএটি একটি আরও ভাল নাম হবে যা দ্ব্যর্থতা সরিয়ে দেয়। মূল সমস্যাটি হ'ল ওপি একটি বিশেষ্যটির পরিবর্তে ক্রিয়াপদ উপসর্গ ব্যবহার করে। নেতৃস্থানীয় ক্রিয়াগুলি কোনও পদ্ধতির ক্রিয়া নির্দেশ করার জন্য অনুমিত হয়।
পিঁপড়া

2
@ ডিডিডি, "এক লাইনের মোড় লাগাতে কত সময় এবং প্রচেষ্টা লাগে" এটি বজায় রাখতে কত প্রচেষ্টা লাগে? এটি কতটা স্ক্রিন এস্টেট নষ্ট করে? চূড়ান্তভাবে কোডটির সাথে সিঙ্ক থেকে বেরিয়ে এসে বিকাশকারীদের বিভ্রান্ত করা শুরু করলে এটি কতটা সময় নষ্ট করে?
অবাকর

1
পদ্ধতিটি একটি মান দেয় এবং একটি ক্রিয়া-বাক্যাংশের নাম রয়েছে। এটাই সমস্যা. এটি একটি বিশেষ্য বাক্যাংশ নাম থাকা উচিত। উদাহরণস্বরূপ 'উরি অবস্থানঅফআপেট ()'। গেটআপডেট লোকেশন নয়, আপনি কি বলছেন "আপনার গেটলোকেশন কী?"
ctrl-alt-delor

14

/// <summary>ব্লকগুলি ইন্টেলিজেন্স এবং এপিআই ডকুমেন্টেশনের জন্য ডকুমেন্টেশন তৈরি করার জন্য ব্যবহৃত হয় ।

সুতরাং, এটি যদি সর্বজনীন মুখোমুখি এপিআই হয় তবে আপনার সর্বদা কমপক্ষে একটি <summary>মন্তব্য অন্তর্ভুক্ত করা উচিত , এমনকি যদি অনুষ্ঠানের উদ্দেশ্যটি পাঠকদের কাছে স্বতঃস্ফূর্ত হওয়া উচিত

তবে এটি নিয়মের ব্যতিক্রম; সাধারণভাবে, কেবল DRY মনে রাখবেন (নিজেকে পুনরাবৃত্তি করবেন না)


5

এর মতো মন্তব্যগুলি পূরণ করুন কেবল যদি আপনি জানেন যে আপনি কীভাবে এই জাতীয় জিনিস থেকে উপকৃত হবেন; অন্যথায় কেবল সেগুলি মুছুন।

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

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

এই নির্দিষ্ট উদাহরণের জন্য, আমি "স্ব-বর্ণনামূলক ধরণের" কিছু ব্যবহার করব (ধরে নিলাম যে কাজটি মুছে ফেলা হবে এমনটি নয়), এর মতো:

class Example
{
    /// <summary>
    /// Self descriptive method name.
    /// </summary>
    public Uri UpdateLocation { get; set; };
}

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


3

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

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

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

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

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

মূল কথাটি হ'ল ভবিষ্যতের কথা ভাবুন। ভবিষ্যতে প্রোগ্রামটি কীভাবে বোঝা ও সংশোধন করা উচিত সে সম্পর্কে আপনার কাছে কী গুরুত্বপূর্ণ এবং স্পষ্ট তা নিজেকে জিজ্ঞাসা করুন [[1]

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

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


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


3

আমার নিজস্ব কোডে, আমি প্রায়শই বিশেষত কৃপণ ব্যক্তিদের মতো জায়গায় মন্তব্য মন্তব্যগুলি রেখে যাব:

<?php
// return the result
return $result;
?>

... যা বর্ণনামূলক দৃষ্টিকোণ থেকে কোডটিকে আরও বোধগম্য করার ক্ষেত্রে স্পষ্টতই কিছুটা অবদান রাখে।

মনে মনে, যদিও এই মন্তব্যগুলির এখনও মূল্য রয়েছে, যদি তারা আপনার সিনট্যাক্স হাইলাইটারটিতে রঙের নিদর্শনগুলির দৃশ্যমান ধারাবাহিকতা বজায় রাখতে সহায়তা করে

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

<?php
//get the id of the thing
$id = $_POST['id'];

//query the things out of the the database
$things = array();
$result = mysql_query("SELECT * FROM Things WHERE `id` = $id");
while ($row = mysql_fetch_assoc($result)) {
    //create a proper Thing object or whatever
    $things[] = new Thing($row);
}

//return the things
return $things;
?>

(অসম্পূর্ণ কোড, এসকিউএল ইঞ্জেকশন ইত্যাদি উপেক্ষা করুন আপনি ধারণাটি পান))

আমার কাছে, চূড়ান্ত মন্তব্যটি কোডটিতে সত্যই মূল্য যুক্ত করে, কারণ এটি ধারাবাহিক রঙিন স্কিম বজায় রেখে অন্যের থেকে একটি "অনুচ্ছেদ" দৃশ্যত চিত্রিত করতে সহায়তা করে।


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


2

নিম্নলিখিতগুলির মধ্যে একটি করতে মন্তব্যগুলি ব্যবহার করা উচিত।

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

মন্তব্যগুলি নিম্নলিখিত করতে ব্যবহার করা উচিত নয়:

  1. অত্যন্ত সুস্পষ্ট যে বিষয়গুলি ব্যাখ্যা কর। আমি একবার এই মত উত্তরাধিকার কোড দেখেছি: page=0; // Sets the page to 0। আমি মনে করি যে কোনও উপযুক্ত ব্যক্তি এটি নির্ধারণ করতে পারে।

2

আমি টোটোলজি সরিয়ে ফেলব তবে মন্তব্যটি রাখব, আমি একটি নমুনা মান দিয়ে বৈশিষ্ট্য এবং পরিবর্তনশীল নামগুলি মন্তব্য করব, যাতে ব্যবহারটি স্পষ্টভাবে বোঝা যায়:

property UpdateLocation:TUpdateLocation;  // url="http://x/y/3.2/upd.aspx",proto=http

এখন আমি কী জানি সেখানে কী ঘটে যায়, এবং মন্তব্য থেকে আমার কীভাবে এটি ব্যবহার করবেন সে সম্পর্কে একটি স্পষ্ট ধারণা রয়েছে।


0

আমি বলব এটি মন্তব্যগুলির উদ্দেশ্যের উপর নির্ভর করে।

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

মন্তব্যগুলি যদি কিছু ভৌগলিকভাবে দূরবর্তী দলের জন্য ডকুমেন্টেশন তৈরি করে, তবে আমি সেখানে প্রতিটি নথিপত্র রেখে দেব।


0

আমি মনে করি এই মন্তব্যটি "মন্তব্যগুলি: অ্যান্টি-প্যাটার্নস", বা "মন্তব্যগুলি কি কোনও কোডের গন্ধযুক্ত?" এর মতো নামে যথেষ্ট পরিমাণে আলোচনা করা হয়েছে? ( একটি উদাহরণ )

আমি সাধারণ ধারণার সাথে একমত হতে চাই যে মন্তব্যগুলিতে নকল নয়, নতুন তথ্য যুক্ত করা উচিত। এর মতো তুচ্ছ মন্তব্য যুক্ত করে আপনি DRY লঙ্ঘন করছেন, এবং কোডের শব্দ অনুপাতের সংকেত হ্রাস করছেন। আমি সম্পত্তি-প্রতি মন্তব্যে (বিশেষত অতিরিক্ত অতিরিক্ত ব্যক্তিদের) চেয়ে দায়বদ্ধতার পিছনে যুক্তি, যুক্তি এবং ক্লাসের উদাহরণ ব্যবহারের তুলনায় উচ্চ-স্তরের মন্তব্যগুলি খুঁজে পাই।

ব্যক্তিগতভাবে, আপনার উদাহরণে, আমি মন্তব্যটি ছেড়ে দেব (যদি সম্পত্তি সম্পর্কে যুক্ত করার জন্য দরকারী কোনও জিনিস না থাকে)।


0

আপনি যদি এমন কোড লিখতে পারেন যা মন্তব্যগুলির প্রয়োজন হয় না তবে আপনি প্রোগ্রামিং নির্বান অর্জন করেছেন!

আপনার কোডটি কম কম কোডের জন্য আরও ভাল কোডের প্রয়োজন !


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

1
সম্ভবত "হ্যালো ওয়ার্ল্ড!" তাহলে প্রোগ্রামার
নির্বান হয়

: -} - এটি এমন কিছু যা খুব কমই অর্জন করা হয় - মূল বক্তব্যটি হ'ল যদি আপনার মন্তব্যটি অর্থ যুক্ত করে এমন সন্ধানের জন্য লড়াই করে যাচ্ছেন তবে কেবল নিজের সাথে সন্তুষ্ট হোন এর অর্থ আপনার কোডটি ঠিক সঠিক!
জেমস অ্যান্ডারসন

0

এর মতো মন্তব্য অকেজো; আমি কি ভুল করছি?

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


0

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


-1

"অবস্থান" এক ধরণের সুস্পষ্ট, তবে "আপডেট" কিছুটা অস্পষ্ট হতে পারে। আপনি যদি আরও ভাল নাম লিখতে না পারেন, তবে আপনি কি মন্তব্যে আরও বিস্তারিত প্রস্তাব দিতে পারেন? কিসের আপডেট? আমাদের কেন এটা দরকার? কিছু অনুমান (কী নাল অনুমোদিত)?

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