আমার এক সহকর্মী বিশ্বাস করেন যে কোড-এর মন্তব্যের কোনও ব্যবহার (যেমন জাভাদোক স্টাইল পদ্ধতি বা শ্রেণীর মন্তব্য নয়) কোডের গন্ধ । আপনি কি মনে করেন?
আমার এক সহকর্মী বিশ্বাস করেন যে কোড-এর মন্তব্যের কোনও ব্যবহার (যেমন জাভাদোক স্টাইল পদ্ধতি বা শ্রেণীর মন্তব্য নয়) কোডের গন্ধ । আপনি কি মনে করেন?
উত্তর:
মন্তব্যে কোড কী করছে তা বর্ণনা করে তবেই।
আমি যদি কোনও পদ্ধতি বা ব্লকে কী ঘটছে তা জানতে চাইলে আমি কোডটি পড়তাম। আমি আশা করব, যাইহোক, কোনও প্রদত্ত প্রকল্পে কাজ করা কোনও বিকাশকারী কমপক্ষে বিকাশের ভাষার সাথে যথেষ্ট পরিমাণে परिचित ছিলেন যা লিখিত রয়েছে তা পড়তে এবং এটি কী করছে তা বুঝতে।
চরম অপ্টিমাইজেশনের কিছু ক্ষেত্রে, আপনি এমন কৌশল ব্যবহার করতে পারেন যা আপনার কোডটি কী করছে তা অনুসরণ করতে কারও পক্ষে অসুবিধা হয়। এই ক্ষেত্রে, মন্তব্যগুলি আপনার কেন এমন অনুকূলকরণ কেন তা নয় কেবল কোডটি কী করছে তা ব্যাখ্যা করার জন্য এবং ব্যবহার করা যেতে পারে। থাম্বের একটি ভাল নিয়ম হ'ল অন্য কাউকে (বা একাধিক লোক) আপনার কোডটি বাস্তবায়নের ভাষা এবং প্রকল্পের সাথে পরিচিত হওয়া উচিত - যদি তারা কেন এবং কীভাবে উভয়ই বুঝতে না পারে তবে আপনাকে কেন এবং কেন উভয়ই মন্তব্য করা উচিত কিভাবে।
তবে কোডটিতে যা পরিষ্কার নয় তা হল আপনি কেন কিছু করেছেন done আপনি যদি এমন কোনও দৃষ্টিভঙ্গি গ্রহণ করেন যা অন্যের কাছে সুস্পষ্ট নাও হতে পারে তবে আপনার একটি মন্তব্য থাকা উচিত যা আপনি কেন সিদ্ধান্ত নিয়েছিলেন তা ব্যাখ্যা করে। আমি সন্দেহ করব যে আপনি হয়ত বুঝতে পারবেন না যে কোনও কোডের পর্যালোচনার মতো কিছু হওয়ার পরেও কোনও মন্তব্য করা দরকার, যেখানে লোকেরা জানতে চায় যে আপনি ওয়াইয়ের পরিবর্তে এক্স করেছেন কেন - আপনি যে উত্তরটি দেখেন তাদের প্রত্যেককেই কোডটিতে আপনার উত্তরটি ক্যাপচার করতে পারেন ভবিষ্যতে
তবে সর্বাধিক গুরুত্বপূর্ণ বিষয় হ'ল আপনি যখন নিজের কোড পরিবর্তন করেন তখন আপনার মন্তব্যগুলি পরিবর্তন করা। আপনি যদি একটি অ্যালগরিদম পরিবর্তন করেন তবে আপনি কেন ওয়াইয়ের চেয়ে অ্যালগোরিদম এক্স এর সাথে গিয়েছিলেন সে সম্পর্কে মন্তব্যগুলি আপডেট করতে ভুলবেন না ale স্টলে মন্তব্যগুলি আরও বড় কোডের গন্ধ।
এই মুহুর্তে এটি শুনতে বিশেষভাবে বিরক্তিকর, আমি এই সপ্তাহান্তে খুব ভাল-নামযুক্ত, খুব পরিষ্কার, অবিচ্ছিন্ন কোডটি গবেষণা অ্যালগরিদম (যা আসলে প্রকাশিত হয় না) প্রয়োগ করে দেখেছি। আমি এটির সাথে উচ্চ-স্তরের পরিচিত, আমার পাশে বসে থাকা লোকটি আবিষ্কারক ছিলেন, এবং কোডটি কয়েক বছর আগে অন্য কেউ লিখেছিলেন। আমরা সবেমাত্র এটি অনুসরণ করতে পারে।
আপনার সহকর্মী স্পষ্টতই যথেষ্ট অভিজ্ঞ নয়।
মন্তব্যে ব্যাখ্যা করা উচিত কেন, কীভাবে নয়।
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)
আমি আপনার সহকর্মীকে ধর্মাবলম্বী ঘোষণা করি! আমার ধার্মিক-বার্নিন বুটগুলি কোথায়?
অবজ্ঞাপূর্ণ মন্তব্য করা খারাপ এবং রক্ষণাবেক্ষণের মাথাব্যথা এবং মন্তব্যগুলি নামযুক্ত পদ্ধতি, শ্রেণি, ভেরিয়েবল ইত্যাদির জন্য কোনও প্রতিস্থাপন নয় তবে কখনও কখনও কেন কিছু হয় তার উপায়টি দরিদ্র নির্বোধদের যারা কোড বজায় রাখতে হয় তাদের পক্ষে অত্যন্ত মূল্যবান হতে পারে ছয় মাসের মধ্যে - বিশেষত যখন সেই দরিদ্র নির্বোধরা আপনার হয়ে থাকে।
আমি যে কোডটিতে কাজ করছি তার কিছু বাস্তব মন্তব্য:
// 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.
আদর্শভাবে, কোডটি এত ভাল কোড করা উচিত যাতে এটি স্বয়ংক্রিয়ভাবে বর্ণনামূলক হয়। বাস্তব বিশ্বে, আমরা জানি যে খুব উচ্চ মানের কোডেরও মাঝে মাঝে মন্তব্য করা প্রয়োজন।
আপনার সম্পূর্ণরূপে যা এড়ানো উচিত তা হ'ল "মন্তব্য-কোড রিডানডেন্সি" (এমন মন্তব্য যা কোডে কোনও কিছু যুক্ত করে না):
i++; // Increment i by 1
তারপরে, যদি কোনও ভাল (এবং রক্ষণাবেক্ষণ / প্রান্তিককরণ) কোড ডিজাইন এবং ডকুমেন্টেশন থাকে তবে মন্তব্য করাও কম কার্যকর।
তবে কিছু পরিস্থিতিতে মন্তব্যগুলি কোড পঠনযোগ্যতার জন্য ভাল সহায়তা হতে পারে:
while( foo )
{
if( dummy )
{
}
else // !dummy
{
}
} // end while( foo )
ভুলে যাবেন না যে আপনাকে মন্তব্যগুলিও বজায় রাখতে এবং সিঙ্কে রাখতে হবে ... পুরানো বা ভুল মন্তব্যগুলি একটি ভয়াবহ ব্যথা হতে পারে! এবং, একটি সাধারণ নিয়ম হিসাবে, অত্যধিক মন্তব্য করা খারাপ প্রোগ্রামিংয়ের লক্ষণ হতে পারে।
} //end while
কেবলমাত্র লুপটির শুরুটির অর্থ এতদূর, আপনি এটি দেখতেও পারবেন না এবং আপনি যে কোডটি দেখছেন সেটি লুপের মধ্যে রয়েছে এমন কোনও ইঙ্গিত নেই। ভারি রিফ্যাক্টরিংয়ে কোডটি কীভাবে কাঠামোবদ্ধ করা হয় সে সম্পর্কে মন্তব্যগুলিতে গুরুত্ব সহকারে অগ্রাধিকার দেওয়া উচিত।
} // end while
মন্তব্যগুলি একটি জীবন রক্ষাকারী হতে পারে।
শ্রেণিবদ্ধভাবে একটি পদ্ধতি বা প্রক্রিয়াটিকে "কোড গন্ধ" হিসাবে সংজ্ঞায়িত করা একটি "উদ্যোগী গন্ধ"। শব্দটি নতুন হয়ে উঠছে "ক্ষতিকারক হিসাবে বিবেচিত"।
দয়া করে মনে রাখবেন যে এই ধরণের সমস্ত জিনিসই গাইডলাইন বলে মনে হয়।
অন্যান্য উত্তরগুলির মধ্যে বেশিরভাগই মন্তব্যগুলি কখন ওয়্যারেন্টেড হয় সে সম্পর্কে ভাল পরামর্শ দেয়।
ব্যক্তিগতভাবে আমি খুব কম মন্তব্য ব্যবহার করি। অ-সুস্পষ্ট প্রক্রিয়াগুলির উদ্দেশ্য ব্যাখ্যা করুন এবং যে কোনও ব্যক্তিকে মাঝে মধ্যে মৃত্যুর হুমকি দিন যা নিজেরাই জিনিসগুলিকে পরিবর্তনের জন্য বিবেচনা করতে পারে যেগুলি কয়েক সপ্তাহের টিউনিংয়ের প্রয়োজন হয়।
কোনও কিন্ডারগার্টনার যতক্ষণ না বুঝতে পারে যতক্ষণ না সবকিছু ঠিকঠাক করা সম্ভবত এটি আপনার সময়ের দক্ষ ব্যবহার নয় এবং সম্ভবত আরও সংক্ষিপ্ত সংস্করণ হিসাবে সম্পাদন করবে না।
মন্তব্যগুলি রান সময়কে প্রভাবিত করে না, সুতরাং কেবল নেতিবাচক বিষয় বিবেচনা করার বিষয়টি রক্ষণাবেক্ষণ।
কিছু ক্ষেত্রে, ভাল নামকরণ, রিফ্যাক্টরিং ইত্যাদি পরিমাণ কোনও মন্তব্য প্রতিস্থাপন করতে পারে না। এই বাস্তব-বিশ্বের উদাহরণটি দেখুন (ভাষা গ্রোভী):
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
এখানে প্রাথমিক ইস্যুটি "কোড গন্ধ" শব্দের অর্থ।
অনেক লোক (আপনাকে সহ আমি মনে করি) একটি কোড গন্ধকে ত্রুটির কাছাকাছি বা কমপক্ষে কিছু ঠিক করার দরকার বলে বোঝে। সম্ভবত আপনি এটিকে "অ্যান্টি-প্যাটার্ন" এর প্রতিশব্দ হিসাবে ভাবেন।
এই শব্দটির অর্থ নয়!
কোড গন্ধ রূপকটি ওয়ার্ডস উইকি থেকে উদ্ভূত হয় এবং তারা চাপ দেয়:
মনে রাখবেন যে কোডসেল একটি ইঙ্গিত যা কিছু ভুল হতে পারে, একটি নির্দিষ্টতা নয় not একটি পুরোপুরি ভাল আইডিয়োম কোডসেল হিসাবে বিবেচিত হতে পারে কারণ এটি প্রায়শই অপব্যবহার করা হয়, বা একটি সহজ বিকল্প রয়েছে যা বেশিরভাগ ক্ষেত্রে কাজ করে। কোডসেলকে কিছু বলা আক্রমন নয়; এটি কেবলমাত্র একটি নিদর্শন যা একটি কাছাকাছি চেহারা warranted হয়।
সুতরাং এর অর্থ কী যে মন্তব্যগুলি কোড-গন্ধযুক্ত: এর অর্থ হ'ল আপনি যখন কোনও মন্তব্য দেখেন তখন আপনার বিরতি দেওয়া উচিত এবং চিন্তা করা উচিত: "হুঁ, আমি কোনও ইঙ্গিত অনুভব করছি যে কোনও কিছু উন্নত হতে পারে"। সম্ভবত আপনি কোনও পরিবর্তনশীলটির নাম পরিবর্তন করতে পারেন, "এক্সট্র্যাক্ট পদ্ধতি" -রফ্যাক্টরিং সম্পাদন করতে পারেন - বা সম্ভবত মন্তব্যটিই সেরা সমাধান হতে পারে।
সম্পাদনা: আমি কেবল এই দুটি নিবন্ধকেই স্টম্পল করেছি, যা এটি আমার চেয়ে আরও ভাল ব্যাখ্যা করেছে:
আমি মনে করি নিয়মটি বেশ সহজ: আপনার কোডটি দেখে একজন সম্পূর্ণ অপরিচিত ব্যক্তিকে কল্পনা করুন। আপনি সম্ভবত 5 বছরের মধ্যে আপনার নিজের কোড একটি অপরিচিত হতে হবে। এই অপরিচিত ব্যক্তির জন্য আপনার কোড বোঝার জন্য মানসিক প্রচেষ্টাটি হ্রাস করার চেষ্টা করুন।
সঠিক মন্তব্য থাকতে একটি ভাল ধারণা মন্তব্য লেখা দিয়ে শুরু করা হয়।
// 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 ...
যে জিনিসগুলি পৃথক করা যায় না তাদের জন্য কেবল পদ্ধতিগুলি নিষ্ক্রিয় করবেন না এবং মন্তব্যে কোড টাইপ করবেন না।
এটিই আমি একটি ন্যূনতমতে মন্তব্য রাখার একটি দরকারী উপায় হিসাবে দেখছি, প্রতিটি লাইনে মন্তব্য করা সত্যিই অকেজো ...
যদি প্যারামিটারগুলি বেশি ব্যবহৃত হয় তবে সেগুলি আপনার ক্লাসে ব্যক্তিগত সদস্য হওয়া উচিত।
আমি মনে করি উত্তরটি স্বাভাবিক "এটি নির্ভর করে" একটি। কোড মন্তব্য করতে কোড মন্তব্য করা একটি গন্ধ। কোড মন্তব্য কারণ আপনি একটি অস্পষ্ট অ্যালগরিদম ব্যবহার করছেন যা তাত্পর্যপূর্ণ একটি ক্রম দ্রুত রক্ষণাবেক্ষণ প্রোগ্রামারকে সংরক্ষণ করে (সাধারণত আমি এটি লেখার 6 মাস পরে) কোডটি কী করছে তা নির্ধারণের জন্য আধা দিন po
// Dear me in the future. Please, resolve this problem.
অথবা
// You think this code was written by somebody else.
// No, it wasn't. You ([some name]) did it.
কোড মন্তব্যগুলি অবশ্যই "কোড গন্ধ" নয়। এই বিশ্বাসটি সাধারণত মন্তব্যগুলি বাসি হয়ে যায় (তারিখের বাইরে) হতে পারে এবং এটি বজায় রাখা কঠিন হতে পারে from যাইহোক, ভাল মন্তব্য করা যা কেন কোডটি একটি নির্দিষ্ট উপায়ে কিছু করছে তা রক্ষণাবেক্ষণের জন্য গুরুত্বপূর্ণ (এবং সাধারণত) গুরুত্বপূর্ণ explain
ভাল মন্তব্য কোড কী করছে এবং এটি আরও একটি গুরুত্বপূর্ণ উপায়ে কেন এটি করছে তা আরও গুরুত্বপূর্ণ understand মন্তব্য প্রোগ্রামারদের দ্বারা পড়া বোঝানো হয় এবং পরিষ্কার এবং সুনির্দিষ্ট হওয়া উচিত। এমন মন্তব্য যা বোঝা শক্ত বা ভুল, সে সম্পর্কে মোটামুটি কোনও মন্তব্য না করার চেয়ে বেশি ভাল নয়।
আপনার কোডে পরিষ্কার এবং সুনির্দিষ্ট মন্তব্য যুক্ত করার অর্থ কোডের একটি বিভাগের "কী" এবং "কেন" বুঝতে আপনাকে মেমরির উপর নির্ভর করতে হবে না। আপনি যখন পরে সেই কোডটি দেখেন তখন এটি সর্বাধিক গুরুত্বপূর্ণ, বা অন্য কাউকে অবশ্যই আপনার কোডটি দেখতে হবে। মন্তব্যগুলি আপনার কোডের পাঠ্য সামগ্রীর অংশ হয়ে গেছে বলে তাদের স্পষ্টভাবে লিখিত হওয়ার পাশাপাশি ভাল লেখার নীতি অনুসরণ করা উচিত।
একটি ভাল মন্তব্য লিখতে, আপনার কোডের উদ্দেশ্যটি (কেন, কীভাবে নয়) ডকুমেন্ট করার জন্য যথাসাধ্য চেষ্টা করা উচিত এবং কোডের পিছনে যুক্তি এবং যুক্তিটি যথাসম্ভব স্পষ্টভাবে নির্দেশ করতে হবে। আদর্শভাবে, আপনি কোডটি লেখার সাথে সাথে মন্তব্যগুলিও একই সময়ে লেখা উচিত। যদি আপনি অপেক্ষা করেন তবে আপনি সম্ভবত ফিরে যাবেন না এবং এগুলি যুক্ত করবেন না।
স্যামস নিজেকে 24 ঘন্টা মধ্যে ভিজ্যুয়াল সি # 2010 শিখান, পৃষ্ঠা 348-349।
কোনও লাইব্রেরিতে উপস্থিত কোনও সমস্যা (তৃতীয় পক্ষের লাইব্রেরি, বা সংকলকের সাথে উপস্থিত একটি লাইব্রেরি উভয়) এড়াতে যদি কোডটি কোনও নির্দিষ্ট উপায়ে লেখা থাকে, তবে এটি মন্তব্য করা অর্থহীন।
ভবিষ্যতের সংস্করণগুলিতে পরিবর্তন করা বা লাইব্রেরির কোনও নতুন সংস্করণ ব্যবহার করার সময়, বা পিএইচপি 4 থেকে পিএইচপি 5 এ যাওয়ার সময়, যেমন মন্তব্য করা হয়েছে তাও বোঝা যায়।
এমনকি সর্বাধিক লিখিত বইটিতে এখনও সম্ভবত একটি ভূমিকা এবং অধ্যায় শিরোনাম রয়েছে। ভাল-ডকুমেন্টেড কোডের মন্তব্যগুলি এখনও উচ্চ-স্তরের ধারণাগুলি বর্ণনা করতে এবং কোডটি কীভাবে সংগঠিত হয়েছে তা ব্যাখ্যা করতে কার্যকর।
কোডটি ব্যাখ্যা করার জন্য মন্তব্য লেখা খারাপ, এই ধারণার সাথে আমি একমত নই। কোডের বাগ রয়েছে তা এই বিষয়টি সম্পূর্ণ উপেক্ষা করে। এটা স্পষ্ট কি কোড হতে পারে না মন্তব্য নেই ছাড়াই। কোডটি করার কথা বলে এটি পরিষ্কার হওয়ার সম্ভাবনা কম less কোনও মন্তব্য ছাড়াই আপনি কীভাবে জানবেন যে ফলাফলগুলি ভুল, বা সেগুলি ভুলভাবে ব্যবহার করা হচ্ছে?
মন্তব্যগুলিতে কোডের উদ্দেশ্যটি ব্যাখ্যা করা উচিত , যাতে কোনও ভুল হয় তবে মন্তব্য + কোড পড়ার কেউ এটির সন্ধান করার সুযোগ পায়।
আমি কোডটি লেখার আগে নিজেকে সাধারণত ইনলাইন মন্তব্য লিখতে দেখি। এইভাবে এটি স্পষ্ট যে আমি কী কোড লিখতে চাইছি এবং আপনি কী করতে চাইছেন তা না জেনে একটি অ্যালগরিদমে হারিয়ে যাওয়া হ্রাস পাবে।
যে মন্তব্যগুলি দেওয়া হয়েছে কারণ কেউ মনে করেন যে এক পদ্ধতিতে 700 টি লাইন রাখা ঠিক আছে এটি গন্ধ।
মন্তব্যগুলি রয়েছে কারণ আপনি জানেন যে আপনি কোনও মন্তব্য না রাখলে, কেউ আবার একই ভুলটি করবে আবার একটি গন্ধ।
মন্তব্যগুলি এনেছে কারণ কিছু কোড বিশ্লেষণ সরঞ্জাম এটির গন্ধও দাবি করে।
যে লোকেরা কখনও কোনও মন্তব্য দেয় না বা অন্যান্য বিকাশকারীদের জন্য এমনকি একটি সামান্য সহায়তাও লিখবে না সেগুলিও গন্ধ। আমি আশ্চর্য হয়েছি যে কত লোক স্টাফ লিখে ফেলবে না, তবে তারা ঘুরে দাঁড়াবে এবং স্বীকার করবে যে তারা 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
আপনাকে কোড এবং মন্তব্যের মধ্যে একটি ভারসাম্য রাখতে হবে ... সাধারণত আমি কিছু মন্তব্য যুক্ত করার চেষ্টা করি যা কোডের একটি ব্লক পুনরায় শুরু করে ume আমি কোডটি বুঝতে সক্ষম হচ্ছি না কারণ (ভাল, এটিও), তবে কারণ আমি নিজের নিজের কোডটি দ্রুত পড়তে পারি এবং নির্দিষ্ট বিভাগগুলি সনাক্ত করতে পারি যেখানে গুরুত্বপূর্ণ জিনিসগুলি এটি ঘটছে।
যাইহোক, আমার নিজের ব্যক্তিগত মানদণ্ড "সন্দেহ হলে মন্তব্য করুন"। আমি সম্পূর্ণ ক্রিপ্টিক লাইনের চেয়ে অপ্রয়োজনীয় লাইন রাখতে পছন্দ করি যা আমি বুঝতে সক্ষম হচ্ছি না। আমি কিছুক্ষণ পরে (এবং আমি সাধারণত করি) কোড পর্যালোচনাতে সর্বদা মন্তব্যগুলি সরিয়ে ফেলতে পারি
এছাড়াও, মন্তব্যগুলি "সতর্কতা অবলম্বন করুন!" ইনপুটটির ফর্ম্যাটটি যদি এসসিআইআই না হয় তবে এই কোডটি পরিবর্তন করতে হবে!
আমি মনে করি কোড মন্তব্য জীবন থেকে খুব খারাপ শুরু করে। আমি এই দিনগুলি সম্পর্কে জানি না, তবে যখন আমাকে স্কুলে প্রথম প্রোগ্রামিং শেখানো হচ্ছে তখন "" এমন একটি প্রোগ্রাম লিখুন যা আলাদা আলাদা লাইনে এক থেকে দশ নম্বর ছাপায়। আপনি নিজের কোডটি মন্তব্য করেছেন তা নিশ্চিত করুন of আপনি মন্তব্য যুক্ত না করলে আপনি চিহ্নিত হয়ে যাবেন কারণ আপনার কোড মন্তব্য করা খুব ভাল জিনিস।
তবে এ জাতীয় তুচ্ছ প্রক্রিয়া সম্পর্কে কী বলার আছে? সুতরাং আপনি ক্লাসিক লেখা শেষ
i++; // add one to the "i" counter.
কেবলমাত্র একটি শালীন গ্রেড পাওয়ার জন্য এবং যদি আপনার কোনও নাস্ত থাকে তবে তাৎক্ষণিকভাবে কোড মন্তব্যে খুব কম মতামত তৈরি করে।
কোড মন্তব্য করা খুব ভাল জিনিস নয়। এটি একটি অত্যাবশ্যকীয় জিনিস, এবং শীর্ষ উত্তরে টমাস ওভেনস যে পরিস্থিতিতে এটির প্রয়োজনীয় তা সম্পর্কে একটি দুর্দান্ত ব্যাখ্যা সরবরাহ করে। যাইহোক, এই পরিস্থিতি খুব কমই হোম ওয়ার্ক-টাইপ অ্যাসাইনমেন্টগুলিতে ক্রপ হয়।
বিভিন্ন উপায়ে, একটি মন্তব্য যুক্ত করা একটি শেষ-অবলম্বন পছন্দ হিসাবে বিবেচনা করা উচিত, যখন যা বলা দরকার তা প্রোগ্রামিং ভাষার সক্রিয় অংশগুলিতে পরিষ্কারভাবে বলা যায় না। যদিও অবজেক্টের নামকরণ বসি যেতে পারে, বিভিন্ন মানব এবং কম্পিউটারের অ-প্রতিক্রিয়া পদ্ধতিগুলি মন্তব্যগুলি বজায় রাখা ভুলে যাওয়া সহজ করে এবং ফলস্বরূপ মন্তব্যগুলি সক্রিয় কোডের চেয়ে অনেক বেশি দ্রুত বাসি হয়ে যায়। যে কারণে, কোনও পছন্দ যেখানে সম্ভব, সেখানে কোডটি পরিষ্কার করার জন্য পরিবর্তন করা সর্বদা মন্তব্যে অস্পষ্ট কোডটি মন্তব্য করার পক্ষে পছন্দ করা উচিত।
প্রতিটি প্রোগ্রামার জানে যে আমরা পরিশেষে কাজের পরিমাণ, ডিবাগিংয়ের কারণে বা কেবলমাত্র সরল উন্মাদনার কারণে আমরা সবাই পাগল হয়ে যাই।
"এটা কর!" আপনার প্রকল্প পরিচালক বলেছেন।
আপনি প্রতিক্রিয়া জানালেন, "এটি করা যায় না।"
তারা বলে, "তাহলে আমরা এটির জন্য অন্য কাউকে খুঁজে পাব।"
আপনি বলেছেন, "ঠিক আছে, সম্ভবত এটি করা যেতে পারে।"
এবং তারপরের এক্স সংখ্যাগুলি দিন .. সপ্তাহ .. মাস .. ব্যয় করার চেষ্টা করুন। পুরো প্রক্রিয়া জুড়ে, আপনি চেষ্টা করবেন এবং ব্যর্থ হবেন, এবং চেষ্টা করবেন এবং ব্যর্থ হবেন। আমরা সকলেই এটি করি। আসল উত্তরটি হ'ল দুটি ধরণের প্রোগ্রামার রয়েছে, তারা মন্তব্য করে এবং যারা তা দেয় না।
1) যাঁরা হয় তা হয় ভবিষ্যতের রেফারেন্সের জন্য ডকুমেন্ট দিয়ে তাদের নিজস্ব কাজকে আরও সহজ করে তুলছেন, ব্যর্থ রুটিনগুলি যে কাজ করেনি তা মন্তব্য করে (গন্ধটি তাদের কাজটিকে সন্ধান করার পরে মুছে ফেলছে না)), বা মন্তব্য দিয়ে কোডটি ভেঙে দিয়েছে ফর্ম্যাটিং আশা করি এটি পড়ার বা বুঝতে কিছুটা সহজ করে তুলবে। গুরুতরভাবে, আমি তাদের দোষ দিতে পারি না। তবে শেষ পর্যন্ত, তারা স্ন্যাপ করে এবং তারপরে আপনার এটি রয়েছে:
// dammit this code sucks! swear! curse! i hate it! i am going to write something here to vent my anger!!!!
2) যাঁরা হয় না তারা সুপারহিরো বলে ভান করছেন, বা একটি গুহায় বসবাস করছেন । এগুলি কেবল অন্যের জন্য, তাদের নিজের জন্যই বেপরোয়া অবজ্ঞা রাখে এবং কোড সম্পর্কে কম যত্ন নিতে পারে বা পরবর্তী সময়ে এটির কী অর্থ হতে পারে।
এখন আমাকে ভুল করবেন না .. স্ব-ডকুমেন্টিং ভেরিয়েবল এবং ফাংশনগুলি এটিকে পুরোপুরি এড়াতে পারে .. এবং আমাকে বিশ্বাস করুন আপনি কখনই পর্যাপ্ত কোড-ক্লিনআপ করতে পারবেন না। তবে সহজ সত্যটি হ'ল যতক্ষণ আপনি ব্যাকআপ রাখেন ততক্ষণ আপনি মন্তব্যগুলি সবসময় মুছতে পারেন ।
আমি যুক্তি দেব যে আপনার কোডে কিছু মন্তব্য ব্যবহার না করা কোড গন্ধ। যদিও আমি সম্মত হই যে কোডটি যথাসম্ভব স্ব-দস্তাবেজ হওয়া উচিত, আপনি একটি নির্দিষ্ট পয়েন্টে আঘাত করেন যেখানে আপনি কোডটি দেখতে যাচ্ছেন যা কোডটি কত ভাল লেখা হোক না কেন তার কোনও মানে হয় না। আমি ব্যবসায়িক অ্যাপ্লিকেশনগুলিতে এমন কিছু কোড দেখেছি যেখানে মন্তব্যগুলি বেশ বাধ্যতামূলক কারণ:
এছাড়াও, সংস্থার স্টাইল গাইডগুলি আপনাকে একটি নির্দিষ্ট উপায়ে কিছু করার জন্য বলতে পারে - যদি তারা বলে যে কোনও ফাংশনে কোডের ব্লকগুলি কী করছে সেগুলি সম্পর্কে আপনার মন্তব্য থাকতে পারে, তবে মন্তব্যগুলি অন্তর্ভুক্ত করুন।
মন্তব্য এবং কোডের মধ্যে একটি বৃহত্তর মৌলিক পার্থক্য রয়েছে: মন্তব্যগুলি লোকদের কাছে অন্য ব্যক্তির সাথে ধারণাগুলি যোগাযোগের উপায়, যেখানে কোডটি মূলত কম্পিউটারের জন্য বোঝানো হয়। "কোড" এর অনেকগুলি দিক রয়েছে যা কেবলমাত্র মানুষের জন্য যেমন নামকরণ এবং ইন্ডেন্টেশন। কিন্তু মন্তব্যগুলি কঠোরভাবে মানুষের জন্য, মানুষের দ্বারা লেখা হয়।
অতএব, মন্তব্য লেখা কোনও লিখিত মানব যোগাযোগের মতোই যতটা কঠিন! শ্রোতা কারা, এবং তাদের কী ধরণের পাঠ্য প্রয়োজন সে সম্পর্কে লেখকের স্পষ্ট ধারণা থাকতে হবে। দশ, বিশ বছরে কে আপনার মন্তব্য পড়বে তা আপনি কীভাবে জানতে পারবেন? যদি ব্যক্তিটি সম্পূর্ণ ভিন্ন সংস্কৃতি থেকে আসে? ইত্যাদি আমি আশা করি প্রত্যেকে এটি বুঝতে পারে।
এমনকি আমি যে ছোট একজাতীয় সংস্কৃতিতে বাস করি তার ভিতরেও অন্যান্য লোকের কাছে ধারণাগুলি যোগাযোগ করা এতই কঠিন। মানব যোগাযোগ সাধারণত দুর্ঘটনা ব্যতীত ব্যর্থ হয়।
আপনার সহকর্মীর সাথে আমার একমত হতে হবে। আমি সবসময় যদি বলি আমি আমার কোড মন্তব্য, এটা মানে হল যে আমি চিন্তিত নই আমি জিনিসটা পারবে না আমার নিজের কোড ভবিষ্যতে। এটি একটি খারাপ লক্ষণ।
আমি কোডটিতে মন্তব্যগুলি ছড়িয়ে দেওয়ার কেবলমাত্র অন্য কারণটি এমন কোনও কিছু কল করা যা বোধগম্য নয়।
এই মন্তব্যগুলি সাধারণত এমন কিছু রূপ নেয়:
//xxx what the heck is this doing??
অথবা
// removed in version 2.0, but back for 2.1, now I'm taking out again
কোড মন্তব্য প্রদান, যেখানে প্রযোজ্য, ফাংশন আর্গুমেন্ট এবং রিটার্নগুলির কাঠামোগত ক্ষেত্রগুলি, এমনকি স্থানীয় ভেরিয়েবলগুলি খুব কার্যকর হতে পারে। মঙ্গল গ্রহে অরবিটারটি মনে রাখবেন!
সাহিত্যের প্রোগ্রামিং কৌশল সম্পর্কে আপনার সহকর্মীকে শিক্ষিত করুন ।
না, মন্তব্যগুলি কোনও কোডের গন্ধ নয়, এগুলি কেবল একটি সরঞ্জাম যা অপব্যবহার করা যায়।
ভাল মন্তব্যের উদাহরণ :
// আমার মনে হয় এটি সেমি। আরও তদন্ত দরকার!
// এটি এক্স করার একটি চতুর উপায়
// তালিকাটি এখানে খালি খালি থাকার গ্যারান্টিযুক্ত
Assert(list.IsEmpty)
?
Assert(!list.isEmpty())
হ'ল তৃতীয় মন্তব্যের মতো চুক্তি নয়, তবে সহজ আচরণ (যেমন "যুক্তিটি খালি থাকলে IllegalArgumentException নিক্ষেপ করুন") যা অন্য কোনও প্রোগ্রামের যুক্তির মতো ইউনিট-টেস্ট হওয়া আবশ্যক। মন্তব্যটির সাথে সূক্ষ্ম পার্থক্যটি নোট করুন, যা পদ্ধতিটি কখন ব্যবহার করা যেতে পারে তা উল্লেখ করে, তবে পূর্ব শর্তটি পূরণ না হলে কোনও আচরণ নির্দিষ্ট করে। কমেন্টের সময় চুক্তিগুলি কার্যকর করা মন্তব্যের চেয়ে আরও ভাল। তবে এটি আমার উত্তরের পরিধি ছাড়িয়ে গেছে;)
Assert
, যেহেতু তারা এমন জিনিসগুলিকে বর্ণনা করে যা কখনই ঘটে না, এমনকি পাবলিক এপিআই অবৈধ যুক্তি গ্রহণ করে।