"মন্তব্যগুলি একটি কোড গন্ধ" [বন্ধ]


100

আমার এক সহকর্মী বিশ্বাস করেন যে কোড-এর মন্তব্যের কোনও ব্যবহার (যেমন জাভাদোক স্টাইল পদ্ধতি বা শ্রেণীর মন্তব্য নয়) কোডের গন্ধ । আপনি কি মনে করেন?


44
আমি "না" বলে যে কোনও উত্তর উপস্থাপন করতে যাচ্ছি।
নিকোল

2
@ রেনিসিস এটি inityশ্বরের গন্ধ।
ixtmixilix

107
আপনার সহকর্মী একটি দুর্দান্ত সাধারণীকরণ করেছেন, যার অর্থ স্বয়ংক্রিয়ভাবে বোঝা যাচ্ছে যে সে ভুল। :)
অ্যালেক্স ফেনম্যান

5
@ মোঙ্গাস, আমি একমত নই আপনার উদাহরণের মন্তব্যগুলি খারাপ কারণ সেগুলি মন্তব্য নয়, তবে তারা কোডের খুব কাছাকাছি যা পরিবর্তিত হয়। তাদের উচিত WHY এবং WHAT বলতে হবে

5
@ অ্যালেক্স, এটি কি একটি সাধারণ জেনারেলাইজেশন নয়, সুতরাং যা ভুল (ফলস্বরূপ তাকে ভুল করা হচ্ছে না)?

উত্তর:


167

মন্তব্যে কোড কী করছে তা বর্ণনা করে তবেই।

আমি যদি কোনও পদ্ধতি বা ব্লকে কী ঘটছে তা জানতে চাইলে আমি কোডটি পড়তাম। আমি আশা করব, যাইহোক, কোনও প্রদত্ত প্রকল্পে কাজ করা কোনও বিকাশকারী কমপক্ষে বিকাশের ভাষার সাথে যথেষ্ট পরিমাণে परिचित ছিলেন যা লিখিত রয়েছে তা পড়তে এবং এটি কী করছে তা বুঝতে।

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

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

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


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

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

3
"মন্তব্যটি কোডটি কী করছে তা কেবল যদি বর্ণনা করা হয়" " অথবা যদি মন্তব্যটি কোডটি কী করত তা বর্ণনা করে; কোড পরিবর্তন হয়েছে তবে মন্তব্য নেই।
ব্রুস অল্ডারম্যান

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

2
@ ব্যাকডোস, অন্য লোকের কোড পড়ার সময় আপনি যদি ঘন ঘন বমি বমি করেন তবে আমি আনন্দিত যে আমরা অফিসগুলি ভাগ করে নিচ্ছি না ...

110

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

আপনার সহকর্মী স্পষ্টতই যথেষ্ট অভিজ্ঞ নয়।


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

8
@ লিগি: আমি চাই। এটি একটি গবেষণা অ্যালগরিদম, কোনও ব্যবসায়ের অ্যাপ্লিকেশন নয়।
পল নাথান

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

29
গণিত, গণিত, গণিত সমস্ত কোড তুচ্ছ আইওসি আঠালো এবং 'মূল্য * পরিমাণ' প্রয়োগ করে না। জটিল গণিতটি স্ব-ব্যাখ্যা করতে যাদুকরীভাবে তৈরি করা যায় না।
bmargulies

4
@ লিগি, কোড প্রয়োগকারী জটিল ডেটাস্ট্রাকচারগুলি বিস্তৃত ডকুমেন্টেশন ছাড়াই পুরোপুরি বোধগম্য হতে পারে।

75

মন্তব্যে ব্যাখ্যা করা উচিত কেন, কীভাবে নয়।

Howটাইপ মন্তব্যগুলি সাধারণত রিফ্যাক্টরিং ব্যবহার করে আরও ভালভাবে ডিল করা হয়। ব্যক্তিগতভাবে, আমি সাধারণত রিফ্যাক্টরিংয়ের পক্ষে মন্তব্যগুলি এড়িয়ে চলি।

আগে:

# convert to cents
a = x * 100

# avg cents per customer 
avg = a / n

# add to list
avgs < avg
t += 1

পরে:

total_cents = total * 100
average_per_customer = total_cents / customer_count

track_average(average_per_customer)

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

3
উদাহরণস্বরূপ, তবে কেন সিস্টেম ডলারের বিপরীতে সেন্ট নিয়ে কাজ করছে? এই প্রশ্নটি আর্থিক ব্যবস্থাগুলিতে প্রাসঙ্গিক হয়ে ওঠে যেখানে আপনি দেখতে পাবেন ভগ্নাংশের মুদ্রা কার্যকর হয়।
rjzii

3
@ স্টুয়ার্ট ফাংশনটির নামটি বলতে হবে এটি কী করে।
এলব

3
@ জিএসটো, আমি এর চেয়ে বেশি দ্বিমত করতে পারি না। কোডটি জটিল হলে এটিকে ছোট ছোট পদ্ধতিতে / ফাংশনে ভাঙা উচিত যথাযথ নাম যা ক্রিয়াটি বর্ণনা করে।
ক্যাফগিকে

1
আপনি ধরে নিন, কোড বেজে আপনার সম্পূর্ণ নিয়ন্ত্রণ রয়েছে।
লেনি প্রোগ্রামার্স

32

আমি আপনার সহকর্মীকে ধর্মাবলম্বী ঘোষণা করি! আমার ধার্মিক-বার্নিন বুটগুলি কোথায়?

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

আমি যে কোডটিতে কাজ করছি তার কিছু বাস্তব মন্তব্য:


    // If this happens, somebody's been screwing around with the database definitions and
    // has removed the restriction that a given alarm may have only one entry in the 
    // notifications table.  Bad maintenance programmer!  Bad!  No biscuit!



    // If an alert is active on our side but inactive on theirs, that might mean
    // they closed the alert.  (Or that we just haven't told them about it yet.)  The
    // logic comes later; for now, we'll just compile it in a list.



    // If we know for a fact that an alarm isn't getting through, we're going to whine pretty
    // aggressively about it until it gets fixed.


7
চমৎকার মন্তব্যের জন্য +1। কোডের পরিমাণের পরিমাণ বলতে পারে না "যদি এটি ঘটে তবে কেউ ডাটাবেস সংজ্ঞা দিয়ে ঘুরে বেড়াচ্ছে"।
ডিস্ট্যান্টএকো

9
@Niphra, ভাল, আমরা পারে একটি নিক্ষেপ SomebodyScrewedAroundWithDatabaseException...

@ থরবজ়ার্ন +1, কোডটি কী কী ভুল তা জানলে ভাল করে তা জানান report গ্রাহকরা প্রযুক্তির সমর্থন করেন সম্ভবত তাদের ডিবি পুনরায় লোড করতে পারে এবং কোনও পরিষেবা কল এড়াতে পারে।
টিম উইলিসক্রফ্ট

@ টিম, গ্রাহকরা এটি দেখতে পাওয়ায় আরও নিরপেক্ষ নামকরণ উপযুক্ত হতে পারে।

3
অবশ্যই, মনে রাখবেন: মূর্খ নাম কখনও ব্যবহার করবেন না। গ্রাহক সর্বদা তাদের দেখতে পাবেন।
টিম উইলিসক্রফ্ট

29

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

আপনার সম্পূর্ণরূপে যা এড়ানো উচিত তা হ'ল "মন্তব্য-কোড রিডানডেন্সি" (এমন মন্তব্য যা কোডে কোনও কিছু যুক্ত করে না):

i++; // Increment i by 1

তারপরে, যদি কোনও ভাল (এবং রক্ষণাবেক্ষণ / প্রান্তিককরণ) কোড ডিজাইন এবং ডকুমেন্টেশন থাকে তবে মন্তব্য করাও কম কার্যকর।

তবে কিছু পরিস্থিতিতে মন্তব্যগুলি কোড পঠনযোগ্যতার জন্য ভাল সহায়তা হতে পারে:

while( foo )
{
     if( dummy )
     {
     }
     else // !dummy
     {
     }
} // end while( foo )

ভুলে যাবেন না যে আপনাকে মন্তব্যগুলিও বজায় রাখতে এবং সিঙ্কে রাখতে হবে ... পুরানো বা ভুল মন্তব্যগুলি একটি ভয়াবহ ব্যথা হতে পারে! এবং, একটি সাধারণ নিয়ম হিসাবে, অত্যধিক মন্তব্য করা খারাপ প্রোগ্রামিংয়ের লক্ষণ হতে পারে।


2
ভাল নামকরণ কনভেনশন এবং ভাল কাঠামোগত কোড আপনাকে মন্তব্যগুলির প্রয়োজনীয়তা হ্রাস করতে সহায়তা করবে। ভুলে যাবেন না যে মন্তব্যগুলির প্রতিটি লাইন এটি যুক্ত করার জন্য এটি একটি নতুন লাইন !!
গ্যাব্রিয়েল Mongeon

81
লোকেরা যখন আপনার প্রশ্নের দ্বিতীয় উদাহরণটি ব্যবহার করে তখন আমি ঘৃণা করি। } //end whileকেবলমাত্র লুপটির শুরুটির অর্থ এতদূর, আপনি এটি দেখতেও পারবেন না এবং আপনি যে কোডটি দেখছেন সেটি লুপের মধ্যে রয়েছে এমন কোনও ইঙ্গিত নেই। ভারি রিফ্যাক্টরিংয়ে কোডটি কীভাবে কাঠামোবদ্ধ করা হয় সে সম্পর্কে মন্তব্যগুলিতে গুরুত্ব সহকারে অগ্রাধিকার দেওয়া উচিত।
কারসন মায়ার্স

4
@ কারসন: ব্লকগুলি সংক্ষিপ্ত রাখা একটি সুপরিচিত নিয়ম, এর অর্থ এই নয় যে আমরা সর্বদা এটি প্রয়োগ করতে পারি।
উইজার্ড 79

4
@ কারসন: আমি যে প্রকল্পগুলিতে কাজ করি তার মধ্যে একটিতে অপর্যাপ্ত কোড পর্যালোচনা রয়েছে, যা "ওএমএফজি জাস্ট নিজেকে হত্যা করে" এর একটি চক্রবৃত্তীয় জটিলতার সাথে জেএসপিগুলির সংগ্রহের দিকে নিয়ে যায়। রক্তাক্ত জিনিসগুলি প্রতিবিম্বিত করা এমন কাজের দিনগুলিকে প্রতিনিধিত্ব করে যা অন্যত্র ব্যয় করা দরকার। এই } // end whileমন্তব্যগুলি একটি জীবন রক্ষাকারী হতে পারে।
ব্লেয়ারহিপ্পো

11
@ ব্লেয়ার হিপ্পো: "[এ] কোডের গন্ধ কোনও প্রোগ্রামের উত্স কোডের কোনও লক্ষণ যা সম্ভবত একটি গভীর সমস্যা নির্দেশ করে"। অবশ্যই মন্তব্যটি জীবন রক্ষাকারী, তবে ওএমজিডব্লিউটিএফ-লুপটি পূর্বোক্ত "গভীর সমস্যা" এবং জীবনরক্ষকের প্রয়োজনীয়তা একটি সুস্পষ্ট সূচক;)
ব্যাকডোডস

26

শ্রেণিবদ্ধভাবে একটি পদ্ধতি বা প্রক্রিয়াটিকে "কোড গন্ধ" হিসাবে সংজ্ঞায়িত করা একটি "উদ্যোগী গন্ধ"। শব্দটি নতুন হয়ে উঠছে "ক্ষতিকারক হিসাবে বিবেচিত"।

দয়া করে মনে রাখবেন যে এই ধরণের সমস্ত জিনিসই গাইডলাইন বলে মনে হয়।

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

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

কোনও কিন্ডারগার্টনার যতক্ষণ না বুঝতে পারে যতক্ষণ না সবকিছু ঠিকঠাক করা সম্ভবত এটি আপনার সময়ের দক্ষ ব্যবহার নয় এবং সম্ভবত আরও সংক্ষিপ্ত সংস্করণ হিসাবে সম্পাদন করবে না।

মন্তব্যগুলি রান সময়কে প্রভাবিত করে না, সুতরাং কেবল নেতিবাচক বিষয় বিবেচনা করার বিষয়টি রক্ষণাবেক্ষণ।


8
আমি ভেবেছিলাম "অ্যান্টি-প্যাটার্ন" হ'ল নতুন "ক্ষতিকারক হিসাবে বিবেচিত"। একটি কোড গন্ধ কেবল এমন কিছু যা সম্ভাব্য পরিষ্কারের জন্য আরও ঘনিষ্ঠ পর্যালোচনা প্রয়োজন।
জেফ্রি হ্যান্টিন

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

4
"1 কিন্ডারগার্টনার যতক্ষণ না বুঝতে পারছেন ততক্ষণ সবকিছু রিফ্যাকচারিং সম্ভবত এটি আপনার সময়ের দক্ষ ব্যবহার নয় এবং সম্ভবত আরও সংক্ষিপ্ত সংস্করণ হিসাবে সম্পাদন করবে না।"
আর্লজ

23

কিছু ক্ষেত্রে, ভাল নামকরণ, রিফ্যাক্টরিং ইত্যাদি পরিমাণ কোনও মন্তব্য প্রতিস্থাপন করতে পারে না। এই বাস্তব-বিশ্বের উদাহরণটি দেখুন (ভাষা গ্রোভী):

  response.contentType="text/html"
  render '{"success":true}'

অদ্ভুত লাগছে, তাই না? সম্ভবত একটি অনুলিপি-পেস্ট-ত্রুটি? একটি বাগফিক্সের জন্য চিৎকার?

এখন মন্তব্যগুলির সাথে একই:

  // DO NOT TOUCH THE FOLLOWING TWO LINES; the ExtJS UploadForm requires it exactly like that!!!
  response.contentType="text/html"  // must be text/html so the browser renders the response within the invisible iframe, where ExtJS can access it
  render '{"success":true}'         // ExtJS expects that, otherwise it will call the failure handler instead of the succss handler

ফাংশন prime_extjs_uploadform () .c প্রতিক্রিয়া। কন্টেন্টটাইপ = 'পাঠ্য / এইচটিএমএল'; 'success "সাফল্য" রেন্ডার করুন: সত্য}'; } prime_extjs_uploadform ();
ড্রিপিজা

23

এখানে প্রাথমিক ইস্যুটি "কোড গন্ধ" শব্দের অর্থ।

অনেক লোক (আপনাকে সহ আমি মনে করি) একটি কোড গন্ধকে ত্রুটির কাছাকাছি বা কমপক্ষে কিছু ঠিক করার দরকার বলে বোঝে। সম্ভবত আপনি এটিকে "অ্যান্টি-প্যাটার্ন" এর প্রতিশব্দ হিসাবে ভাবেন।

এই শব্দটির অর্থ নয়!

কোড গন্ধ রূপকটি ওয়ার্ডস উইকি থেকে উদ্ভূত হয় এবং তারা চাপ দেয়:

মনে রাখবেন যে কোডসেল একটি ইঙ্গিত যা কিছু ভুল হতে পারে, একটি নির্দিষ্টতা নয় not একটি পুরোপুরি ভাল আইডিয়োম কোডসেল হিসাবে বিবেচিত হতে পারে কারণ এটি প্রায়শই অপব্যবহার করা হয়, বা একটি সহজ বিকল্প রয়েছে যা বেশিরভাগ ক্ষেত্রে কাজ করে। কোডসেলকে কিছু বলা আক্রমন নয়; এটি কেবলমাত্র একটি নিদর্শন যা একটি কাছাকাছি চেহারা warranted হয়।

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

মন্তব্যগুলির কোডের গন্ধ হওয়ার অর্থ এটিই।

সম্পাদনা: আমি কেবল এই দুটি নিবন্ধকেই স্টম্পল করেছি, যা এটি আমার চেয়ে আরও ভাল ব্যাখ্যা করেছে:


2
আমি হতবাক হয়েছি যে এই উত্তরটি আসতে 2 মাস সময় নিয়েছে। এটি বোঝায় যে শব্দটির ভুল বোঝাবুঝি কতটা ব্যাপক।
পল কসাই

সাধারণ কেস জোর দেওয়া এখনও ভুল। আপনি বলবেন না, "আমি মন্তব্য কোড দেখছি That's এটি একটি খারাপ চিহ্ন।"
স্টুয়ার্ট পি। বেন্টলে

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

এটা সঠিক উত্তর.
vidtige

21

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


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

না, আপনার এমন একজন সাইকোপ্যাথের কল্পনা করা উচিত যিনি জানেন কোথায় আপনি থাকেন: তারা কি আপনার কোড বজায় রাখতে খুশি হবে?
রিচার্ড

4
আমি যখন অপঠনযোগ্য কোড দেখি তখন আমি নিয়মিত সাইকোপ্যাথ হয়ে যাই।
লেনি প্রোগ্রামার্স

3
5 বছর? আরও 5 মিনিটের মত। ;)
অ্যালেক্স ফেনম্যান

11

সঠিক মন্তব্য থাকতে একটি ভাল ধারণা মন্তব্য লেখা দিয়ে শুরু করা হয়।

// This function will do something with the parameters, 
// the parameters should be good according to some rules.
myFunction(parameters)
{
    // It will do some things to get started.

    // It will do more with the stuff.

    // It will end doing things with the stuff.
}

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

// This function will do something with the parameters, 
// the parameters should be good according to some rules.
myfunction(parameters)
{
  var someThing = initializedWithSomething;

  doSomethingWith(someThing);

  doMoreWith(someThing);

  endDoingThingsWith(someThing);

  return someThing;
}

// This function will do some things to get started,
// the parameters should be good according to some rules.
doSomethingWith(parameters)
{
  parameters.manipulateInSomeWay();
  ... etc ...
}

... etc ...

যে জিনিসগুলি পৃথক করা যায় না তাদের জন্য কেবল পদ্ধতিগুলি নিষ্ক্রিয় করবেন না এবং মন্তব্যে কোড টাইপ করবেন না।

এটিই আমি একটি ন্যূনতমতে মন্তব্য রাখার একটি দরকারী উপায় হিসাবে দেখছি, প্রতিটি লাইনে মন্তব্য করা সত্যিই অকেজো ...

যদি প্যারামিটারগুলি বেশি ব্যবহৃত হয় তবে সেগুলি আপনার ক্লাসে ব্যক্তিগত সদস্য হওয়া উচিত।


1
এই আমি কি কি. আপনি যদি মনে করেন আপনার মন্তব্য দরকার, আমি প্রতিস্থাপন হিসাবে আন্তরিকভাবে এটি চেষ্টা করার পরামর্শ দিতে পারি।
bzlm

10

আমি মনে করি উত্তরটি স্বাভাবিক "এটি নির্ভর করে" একটি। কোড মন্তব্য করতে কোড মন্তব্য করা একটি গন্ধ। কোড মন্তব্য কারণ আপনি একটি অস্পষ্ট অ্যালগরিদম ব্যবহার করছেন যা তাত্পর্যপূর্ণ একটি ক্রম দ্রুত রক্ষণাবেক্ষণ প্রোগ্রামারকে সংরক্ষণ করে (সাধারণত আমি এটি লেখার 6 মাস পরে) কোডটি কী করছে তা নির্ধারণের জন্য আধা দিন po



8

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

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

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

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

স্যামস নিজেকে 24 ঘন্টা মধ্যে ভিজ্যুয়াল সি # 2010 শিখান, পৃষ্ঠা 348-349।


1
মন্তব্যগুলি বাসি হয়ে উঠতে পারে তবে ক্লাস, ফাংশন এবং ভেরিয়েবল নামের অর্থের মতো সংকলক বা ইউনিট পরীক্ষা দ্বারা যা যা যা যা যা যা সংকলক বা যাচাই করে তা যাচাই করে না everything
লেনি প্রোগ্রামাররা

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

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

6

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


6

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


এই ধরণের মন্তব্যগুলি দুর্দান্ত ভিজ্যুয়াল ইঙ্গিত দেয় যাতে আপনি যে বিভাগটি সন্ধান করছেন তা শুরু করতে প্রতিটি লাইন পড়তে হবে না। আমার দাদা যেমন বলতেন, "সবকিছুই সংযত"।
blrfl

4

সম্মানজনক উল্লেখ হ'ল বিরোধী নিদর্শন:

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


4

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

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

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


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

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

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

3

যে মন্তব্যগুলি দেওয়া হয়েছে কারণ কেউ মনে করেন যে এক পদ্ধতিতে 700 টি লাইন রাখা ঠিক আছে এটি গন্ধ।

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

মন্তব্যগুলি এনেছে কারণ কিছু কোড বিশ্লেষণ সরঞ্জাম এটির গন্ধও দাবি করে।

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


3

আমি আমার নিজের একটি প্রশ্নের উত্তর দিয়ে দেব। আপনি নীচে নিরক্ষিত কোডে বাগ খুঁজে পেতে পারেন?

tl; dr: আপনার কোড বজায় রাখার পরবর্তী ব্যক্তি আপনার মতো godশ্বরের মতো নাও হতে পারে।

 [org 0x7c00]

 main:
  mov ah, 0x0e
  mov bx, string
  call strreverse
  call print

 stop:
  jmp $

 strreverse:
  pusha
  mov dx, bx
  mov cx, 0

 strreverse_push:
  mov al, [bx]
  cmp al, 0
  je strreverse_pop
  push ax
  add bx, 1
  add cx, 1
  jmp strreverse_push

 strreverse_pop:
  mov bx, dx

 strreverse_pop_loop:
  cmp cx, 0
  je strreverse_end
  pop ax
  mov [bx], al
  sub cx, 1
  add bx, 1
  jmp strreverse_pop_loop

 strreverse_end:
  popa
  ret

 print:
  pusha

 print_loop:
  mov al, [bx]
  cmp al, 1
  je print_end
  int 0x10
  add bx, 1
  jmp print_loop

 print_end:
  popa
  ret
 string:
  db 'Boot up', 0

 times 510 -( $ - $$ ) db 0
 dw 0xaa55

তবে এই দিন এবং যুগে আপনি কী উচ্চ স্তরের ল্যাঙ্গেজ ব্যবহার করছেন না?
ইয়ান

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

অবশ্যই কোডটি সি বা সি ++ তে লেখা যেতে পারে এবং বাইনারিটি সি অবজেক্ট কোড এবং কিছু বাহ্যিক সরঞ্জাম থেকে একত্রিত হয়েছিল।
কেভিন

দুর্ভাগ্যবশত না. কোডপ্রজেক্টে এই পৃষ্ঠাটি দেখুন: codeproject.com/KB/tips/boot-loader.aspx - "উচ্চ-স্তরের ভাষাগুলিতে প্রয়োজনীয় নির্দেশাবলী নেই"। কেবল এটিই নয়, আপনি বুটলোডারটিতে খেলতে পেলেন 512 বাইট। কখনও কখনও আপনাকে কেবল হার্ডওয়ারে পৌঁছাতে হবে।
পিঁপড়া

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

2

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

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

এছাড়াও, মন্তব্যগুলি "সতর্কতা অবলম্বন করুন!" ইনপুটটির ফর্ম্যাটটি যদি এসসিআইআই না হয় তবে এই কোডটি পরিবর্তন করতে হবে!


"কোডগুলির একটি ব্লক পুনরায় সূচনা হওয়া মন্তব্য" দ্বারা আপনি কী বোঝাতে চেয়েছেন আপনি তা ব্যাখ্যা করতে পারেন?
সি সি

2

এটি পড়ার পরে আমি এমন কিছু স্মরণ করিয়ে দিচ্ছি যা আমি প্রথম কয়েক বছর আগে পড়েছিলাম (দীর্ঘ তালিকা থেকে, ফটোকপিগুলি সংরক্ষণ করে সংরক্ষিত):

রিয়েল প্রোগ্রামাররা মন্তব্য লেখেন না - এটি লিখতে যদি কষ্ট হত তবে এটি পড়তে হবে

একটি বরং পুরানো গন্ধ methinks।


2

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

তবে এ জাতীয় তুচ্ছ প্রক্রিয়া সম্পর্কে কী বলার আছে? সুতরাং আপনি ক্লাসিক লেখা শেষ

i++; // add one to the "i" counter.

কেবলমাত্র একটি শালীন গ্রেড পাওয়ার জন্য এবং যদি আপনার কোনও নাস্ত থাকে তবে তাৎক্ষণিকভাবে কোড মন্তব্যে খুব কম মতামত তৈরি করে।

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

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


প্রাথমিক মন্তব্য প্রোগ্রামের ক্লাস দিয়ে খারাপ মন্তব্য অভ্যাস শুরু হয় তা নির্দেশ করার জন্য +1। -1 উপসংহারে পৌঁছানোর জন্য যে মন্তব্যগুলি কেবলমাত্র একটি শেষ অবলম্বন পছন্দ।
এশেলি

1

অবশ্যই মন্তব্যগুলি একটি কোড গন্ধ ...

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

"এটা কর!" আপনার প্রকল্প পরিচালক বলেছেন।

আপনি প্রতিক্রিয়া জানালেন, "এটি করা যায় না।"

তারা বলে, "তাহলে আমরা এটির জন্য অন্য কাউকে খুঁজে পাব।"

আপনি বলেছেন, "ঠিক আছে, সম্ভবত এটি করা যেতে পারে।"

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

1) যাঁরা হয় তা হয় ভবিষ্যতের রেফারেন্সের জন্য ডকুমেন্ট দিয়ে তাদের নিজস্ব কাজকে আরও সহজ করে তুলছেন, ব্যর্থ রুটিনগুলি যে কাজ করেনি তা মন্তব্য করে (গন্ধটি তাদের কাজটিকে সন্ধান করার পরে মুছে ফেলছে না)), বা মন্তব্য দিয়ে কোডটি ভেঙে দিয়েছে ফর্ম্যাটিং আশা করি এটি পড়ার বা বুঝতে কিছুটা সহজ করে তুলবে। গুরুতরভাবে, আমি তাদের দোষ দিতে পারি না। তবে শেষ পর্যন্ত, তারা স্ন্যাপ করে এবং তারপরে আপনার এটি রয়েছে: // dammit this code sucks! swear! curse! i hate it! i am going to write something here to vent my anger!!!!

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

এখন আমাকে ভুল করবেন না .. স্ব-ডকুমেন্টিং ভেরিয়েবল এবং ফাংশনগুলি এটিকে পুরোপুরি এড়াতে পারে .. এবং আমাকে বিশ্বাস করুন আপনি কখনই পর্যাপ্ত কোড-ক্লিনআপ করতে পারবেন না। তবে সহজ সত্যটি হ'ল যতক্ষণ আপনি ব্যাকআপ রাখেন ততক্ষণ আপনি মন্তব্যগুলি সবসময় মুছতে পারেন ।


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

1

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

  1. কেস ভিত্তিতে আপনার কেস কিছু করতে হবে এবং এটির জন্য কোনও ভাল যুক্তি নেই।
  2. আইনগুলি পরিবর্তিত হওয়ার পরে কোডটি সম্ভবত এক বা দুই বছরে পরিবর্তিত হবে এবং আপনি দ্রুত এটি আবার খুঁজে পেতে চান want
  3. কেউ অতীতে কোডটি সম্পাদনা করেছিলেন কারণ তারা বুঝতে পারে না যে কোডটি কী করছে।

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


1

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

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

এমনকি আমি যে ছোট একজাতীয় সংস্কৃতিতে বাস করি তার ভিতরেও অন্যান্য লোকের কাছে ধারণাগুলি যোগাযোগ করা এতই কঠিন। মানব যোগাযোগ সাধারণত দুর্ঘটনা ব্যতীত ব্যর্থ হয়।


0

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

আমি কোডটিতে মন্তব্যগুলি ছড়িয়ে দেওয়ার কেবলমাত্র অন্য কারণটি এমন কোনও কিছু কল করা যা বোধগম্য নয়।

এই মন্তব্যগুলি সাধারণত এমন কিছু রূপ নেয়:

//xxx what the heck is this doing??

অথবা

// removed in version 2.0, but back for 2.1, now I'm taking out again

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

খুবই সত্য. ভাল কোড সুস্পষ্ট না হওয়ার কারণ রয়েছে। বিভ্রান্তিকর কোডটি বিভ্রান্তিমূলকভাবে লেখা হয়েছে বলে বেশিরভাগ সময় বিভ্রান্তিকর কোডটি বিভ্রান্ত হয়।
কেন

দেখে মনে হচ্ছে আপনি এম্বেড থাকা প্রসেসরের জন্য কোড লিখিত হয়নি যেখানে আপনার কেবল খেলতে 32k আছে এবং জিনিসগুলি আপনাকে একটি বিড অস্পষ্ট করে। মন্তব্যগুলি জীবন রক্ষাকারী।
দ্রুত_ এখন

0

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


পরিবর্তনশীল নামগুলিতে ইউনিটগুলি তৈরি করা আরও ভাল, যাতে দরিদ্র প্রোগ্রামার তাদের মনে রাখে না। 'ডাবল দৈর্ঘ্য // মিটারে' এর পরিবর্তে 'ডাবল দৈর্ঘ্য_মি' বলুন। সর্বোপরি আরও শক্তিশালী ভাষা ব্যবহার করা, যাতে আপনি সহজভাবে দৈর্ঘ্য l বলতে পারেন; জোর চ; টর্ক t = l * f; মুদ্রণ (t.in (Torque.newtonMeter));
কেভিন লাইন

0

এখানে আমার নিয়ম-এর থাম্ব:

  • কোডটি লিখুন এবং একটি পৃথক নথিতে কোডের একটি সংক্ষিপ্তসার সঞ্চয় করুন।
  • অন্য কোনও কিছুতে কাজ করার জন্য কোডটি কয়েক দিন একা রেখে দিন।
  • কোডটিতে ফিরে আসুন। এটি করার কথা বলে আপনি যদি তাৎক্ষণিকভাবে বুঝতে না পারেন তবে উত্স ফাইলে সংক্ষিপ্তসারটি যুক্ত করুন।


0

না, মন্তব্যগুলি কোনও কোডের গন্ধ নয়, এগুলি কেবল একটি সরঞ্জাম যা অপব্যবহার করা যায়।

ভাল মন্তব্যের উদাহরণ :

// আমার মনে হয় এটি সেমি। আরও তদন্ত দরকার!

// এটি এক্স করার একটি চতুর উপায়

// তালিকাটি এখানে খালি খালি থাকার গ্যারান্টিযুক্ত


তৃতীয়টি একটি খারাপ মন্তব্য আইএমও। কেন হবে না Assert(list.IsEmpty)?
কোডসইনচাউস

@ কোডইনচাউস আইএমও Assert(!list.isEmpty())হ'ল তৃতীয় মন্তব্যের মতো চুক্তি নয়, তবে সহজ আচরণ (যেমন "যুক্তিটি খালি থাকলে IllegalArgumentException নিক্ষেপ করুন") যা অন্য কোনও প্রোগ্রামের যুক্তির মতো ইউনিট-টেস্ট হওয়া আবশ্যক। মন্তব্যটির সাথে সূক্ষ্ম পার্থক্যটি নোট করুন, যা পদ্ধতিটি কখন ব্যবহার করা যেতে পারে তা উল্লেখ করে, তবে পূর্ব শর্তটি পূরণ না হলে কোনও আচরণ নির্দিষ্ট করে। কমেন্টের সময় চুক্তিগুলি কার্যকর করা মন্তব্যের চেয়ে আরও ভাল। তবে এটি আমার উত্তরের পরিধি ছাড়িয়ে গেছে;)
এন্ড্রেস এফ।

আপনার এ ব্যায়াম করতে সক্ষম হবেন না Assert, যেহেতু তারা এমন জিনিসগুলিকে বর্ণনা করে যা কখনই ঘটে না, এমনকি পাবলিক এপিআই অবৈধ যুক্তি গ্রহণ করে।
CodeInChaos

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