হালনাগাদ
জোর দেওয়ার জন্য উদ্ধৃতিগুলিতে আমার প্রতিক্রিয়া:
এটি আমার বিশ্বাস যে উত্তরটি বলে যে কোডিং স্ট্যান্ডার্ডগুলিতে মন্তব্যগুলিকে সম্বোধন করা উচিত নয় এবং তারপরে লড়াই করার জন্য একটি রক্ষণাত্মক প্রশ্নের একটি সেট তালিকাবদ্ধ করা উচিত, এটিই একমাত্র সঠিক উত্তর।
এখানে সমস্যাটি হ'ল একটি কোডিং স্ট্যান্ডার্ড কেবল এটি একটি স্ট্যান্ডার্ড । চূড়ান্তভাবে বিষয়গত ধারণা কোনও কোডিং স্ট্যান্ডার্ডে থাকা উচিত নয় । এটি সেরা অভ্যাসের গাইডের মধ্যে একটি হতে পারে তবে কোড পর্যালোচনা চলাকালীন সেই নির্দেশিকা কোনও বিকাশকারীর বিরুদ্ধে ব্যবহার করা যাবে না। আমার ব্যক্তিগত মতে, একটি কোডিং স্ট্যান্ডার্ডটি যতটা সম্ভব অটোমেটেডের কাছাকাছি হওয়া উচিত। কোড রিভিউগুলিতে নামকরণ, ফাঁক, ট্যাব, বন্ধনী, মন্তব্য ইত্যাদির বিষয়ে বিতর্ক করে এমন অনেক সময় নষ্ট হয় যখন এর সবগুলি স্বয়ংক্রিয়ভাবে করা যায়। এমনকি সম্পর্কে এবং উত্তর স্বয়ংক্রিয় করা যেতে পারে। লিন্ট'এর অভিধানগুলি, ধারণা অনুসারে মূলধনের চেকগুলি (ভেরিয়েবল, ফাংশন, পদ্ধতি, শ্রেণি, ইত্যাদি) অনুমতি দেয়।tables
chairs
এমনকি জাভাডক চেকিং কোনও পুল অনুরোধ গ্রহণের আগে কোনও রোবট লিন্টি'র দ্বারা প্রয়োগ করা যেতে পারে। অনেকগুলি ওপেন সোর্স প্রকল্পগুলি এই সঠিক কাজটি করে। আপনি আপনার পুল অনুরোধ জমা দিন, কোডটি ট্র্যাভিস-সিআই ফাইল সহ স্ট্যাটিক বিশ্লেষণ সহ নির্মিত হয়েছে এবং এটি অবশ্যই কোডিং স্ট্যান্ডার্ডগুলি পাস করবে যা উদ্দেশ্যমূলকভাবে প্রকাশ করা যেতে পারে। কোনও মন্তব্য সহ 'ভুলভাবে এটি করা' বা 'মান প্রদান করা' বা ভেরিয়েবলগুলির নামকরণের ভুল উপায়, ইত্যাদি সম্পর্কে কোনও মানবিক ছায়া নেই। এই আলোচনার কোনও মূল্য নেই এবং এটি তৃতীয় পক্ষের রোবোটে সবচেয়ে ভাল ছেড়ে যায় যা আমাদের সংবেদনশীল কোডিংয়ের ফলস্বরূপ নিতে পারে।
আসলে প্রশ্নের উত্তর দেওয়ার জন্য আমাদের কীভাবে একটি স্ট্যান্ডার্ড লিখতে হবে যাতে নীচের প্রশ্নের উত্তর কীভাবে দেওয়া উচিত তা সম্বোধন করতে হবে: এই মন্তব্যটির কোনও মূল্য দেওয়া হয়নি? একটি কোডিং স্ট্যান্ডার্ড সম্ভবত কোনও মন্তব্যের 'মান' নির্ধারণ করতে পারে না। এর জন্য একজন মানুষের পক্ষে সেই চেকলিস্টের মধ্য দিয়ে যেতে হবে। কোডিং স্ট্যান্ডার্ডে মন্তব্যে কেবল উল্লেখ করা একটি চেকলিস্ট তৈরি করে যা মূল পোস্টার এড়াতে চাইছে।
এজন্য মন্তব্যগুলি সাধারণত সংকলক দ্বারা প্রক্রিয়া করা হয় না এবং ছিটকে যায়। তাদের মান নির্ধারণ করা যায় না। প্রশ্নে মন্তব্য মূল্যবান; হ্যাঁ বা না?. এই প্রশ্নের উত্তর দেওয়া এনপি-হার্ড। কেবলমাত্র মানুষেরা এর যথাযথভাবে উত্তর দেওয়ার জন্য একটি সুযোগ দাঁড়ায় এবং তারপরেও এটি পড়ার সময়েই এটির উত্তর দেওয়া যেতে পারে, যে ব্যক্তি এটি পড়ছে; যেখানে এই মন্তব্যের মান আবহাওয়া, তার বা তার গৃহজীবন দ্বারা প্রভাবিত হয়, সর্বশেষ বৈঠকটি তারা সবেমাত্র উপস্থিত হয়েছিল এবং ভালভাবে শেষ হয়নি, দিনের সময়, তার পরিমাণ পরিমাণ কফি। আমার বিশ্বাস ছবিটি আরও স্পষ্ট হয়ে উঠছে।
কীভাবে এটি সম্ভবত কোনও স্ট্যান্ডার্ডে সঠিকভাবে প্রকাশ করা যেতে পারে? ধারাবাহিকভাবে এবং সুষ্ঠুভাবে প্রয়োগ করা না গেলে স্ট্যান্ডার্ড কার্যকর নয়, যেখানে ন্যায্যতা আপত্তিজনক নয় এমনটি মানসিক নয়।
আমি প্রতিযোগিতা করছি যে কোনও কোডিং স্ট্যান্ডার্ডটি যতটা সম্ভব উদ্দেশ্য হিসাবে থাকা উচিত। যেভাবে ভেরিয়েবলের নাম দেওয়া হয় আইএসের উদ্দেশ্য। সঠিক বানান, ব্যাকরণগত কাঠামো এবং কেসিংয়ের জন্য এগুলি সহজেই কোনও অভিধানের বিরুদ্ধে পরীক্ষা করা যায়। এর বাইরে যে কোনও কিছুই হ'ল "পিসিং ম্যাচ" যা সবচেয়ে বেশি ক্ষমতা সম্পন্ন ব্যক্তি দ্বারা বা "ব্রাউজ বিটিং" দ্বারা জিতে যায়। ব্যক্তিগতভাবে আমি কিছু না করার সাথে লড়াই করছি।
আমি যখন মন্তব্য করি, আমি সর্বদা তৃতীয় ব্যক্তির সাথে আমার ভবিষ্যতের স্বের সাথে কথা বলে মন্তব্য করি। আমি যদি 5 বছরে এই কোডটিতে ফিরে আসি তবে আমার কী জানা দরকার? কী সহায়ক হবে, বিভ্রান্তিকর কি হবে, এবং কোডটি কী কী পুরানো হবে? অনুসন্ধানযোগ্য পাবলিক এপিআই এবং কমেন্টিং কোড তৈরি করার জন্য ডকুমেন্টিং কোডের মধ্যে ভিন্নতা রয়েছে যা কোনও অজানা তৃতীয় পক্ষের মান সরবরাহ করে, এমনকি যদি তৃতীয় পক্ষটি নিজেই হয়।
এখানে একটি ভাল লিটমাস পরীক্ষা রয়েছে। আপনি যদি প্রকল্পের একমাত্র হন। আপনি জানতেন যে আপনি প্রকল্পের একমাত্র হতে পারবেন। আপনার কোডিং স্ট্যান্ডার্ডটি কী হবে? আপনি চাইবেন যে আপনার কোডটি পরিস্কার, স্ব-বর্ণনামূলক এবং ভবিষ্যতে নিজের কাছে বোধগম্য হোক। আপনি কেন প্রতিটি লাইনে মন্তব্য করেননি সে সম্পর্কে আপনার নিজের সাথে একটি কোড পর্যালোচনা হবে? আপনি চেক ইন করা 100 টি ফাইলের উপর আপনি তৈরি প্রতিটি মন্তব্য পর্যালোচনা করবেন? তা না হলে অন্যকে কেন জোর করবেন?
আমি বিশ্বাস করি যে এই আলোচনাগুলি থেকে বাদ পড়েছি তা হ'ল ফিউচার আপনিও এই প্রকল্পের একজন বিকাশকারী। মান সম্পর্কে জিজ্ঞাসা করার সময়, আগামীকাল আপনি সেই ব্যক্তিও যা মন্তব্য থেকে মান অর্জন করতে পারে। দলের আকার তাই আমার মতে কিছু যায় আসে না। দলের অভিজ্ঞতা গুরুত্বপূর্ণ নয়, এটি প্রায়শই পরিবর্তন হয়।
এটি পর্যালোচনা করার মতো কোনও পরিমাণের কোডই একজন গতিময় নির্মাতাকে কোনও রোগীকে ক্রাশ এবং হত্যা করা থেকে বিরত রাখে না। আপনি একবার এমন মন্তব্য সম্পর্কে কথা বলবেন যা কোডকে প্রভাবিত করে, আপনি এখন কোডটির বিষয়ে মন্তব্য করছেন না talking যদি এটি গ্রহণ করা হয় তবে তা হ'ল কাউকে মেরে ফেলার মন্তব্য, অন্য কিছু আছে যা প্রক্রিয়াতে গন্ধ পেয়েছে।
কোডিংয়ের এই ধরণের কঠোর পদ্ধতির সমাধান ইতিমধ্যে নিজেই সফ্টওয়্যার লেখার পদ্ধতি হিসাবে সরবরাহ করা হয়েছে। এবং মন্তব্যের সাথে এর কোনও যোগসূত্র নেই। মন্তব্যে সমস্যাটি হ'ল পণ্য চূড়ান্তভাবে যেভাবে কাজ করে তাতে তাদের কোনও প্রভাব নেই। পেস মেকারের মধ্যে এমবেড থাকা অবস্থায় বিশ্বের সেরা মন্তব্যগুলি সফ্টওয়্যারটিকে ক্রাশ হওয়া থেকে বিরত রাখতে পারে না। অথবা কোনও বহনযোগ্য ইসিজি দিয়ে বৈদ্যুতিক সংকেত পরিমাপ করার সময়।
আমাদের দুটি ধরণের মন্তব্য রয়েছে:
মেশিন রিডেবল কমেন্টস
জাভাডোক, জেএসডোক, ডক্সিজেন ইত্যাদির মতো মন্তব্য শৈলীগুলি সর্বজনীন ইন্টারফেসের কোডের একটি সেট প্রদানের মন্তব্য করার সমস্ত উপায়। এই ইন্টারফেসটি কেবলমাত্র অন্য একক বিকাশকারী (দুটি ব্যক্তির দলের মালিকানাধীন কোড), অজানা সংখ্যক বিকাশকারী (যেমন জেএমএস), বা একটি সম্পূর্ণ বিভাগের জন্য ব্যবহার করা যেতে পারে। এই কোডটি একটি স্বয়ংক্রিয় প্রক্রিয়া দ্বারা পঠিত হতে পারে যা এরপরে এই মন্তব্যগুলি, আলা এইচটিএমএল, পিডিএফ এবং এগুলি পড়ার একটি ভিন্ন উপায় তৈরি করে।
এই ধরণের মন্তব্যটির জন্য একটি স্ট্যান্ডার্ড তৈরি করা সহজ। এটি প্রতিটি পাবলিকভাবে অনুরোধ-সক্ষম পদ্ধতি, ফাংশন, শ্রেণিতে প্রয়োজনীয় মন্তব্যগুলি নিশ্চিত করার একটি উদ্দেশ্যমূলক প্রক্রিয়া হয়ে ওঠে। শিরোনাম, পরামিতি, বিবরণ এবং। এল। এটি অন্য দলের পক্ষে কোডটি সন্ধান এবং ব্যবহার করা সহজ ensure
আমি এমন কিছু করছি যা দেখতে পাগল দেখাচ্ছে, তবে আসলে তা নয়
এই কোডগুলি একটি নির্দিষ্ট উপায়ে কেন লেখা হয়েছিল তা অন্যদের দেখতে এই মন্তব্যগুলি এখানে রয়েছে। প্রসেসরগুলিতে কোডটি চলমান রয়েছে এবং এটি সর্বদা গোল হয়ে যায়, তবুও বিকাশকারীরা সাধারণত কোনও কোডটি নিয়ে আসে যা গোল হয়। সুতরাং, আমরা কোডটিকে স্পর্শকারী কোনও বিকাশকারী বুঝতে পারে যে বর্তমান প্রসঙ্গটি কিছু করছে কেন তা সাধারণত অযৌক্তিক বলে মনে হয়, তবে বাস্তবে উদ্দেশ্য অনুসারে সেভাবেই এটি লেখা হয়েছিল ensure
এই ধরণের কোড হ'ল যা এত সমস্যার সৃষ্টি করে। এটি সাধারণত অনাকাঙ্ক্ষিত হয় এবং পরে এটি একটি নতুন বিকাশকারী এবং 'ফিক্সড' দ্বারা পাওয়া যায়। এভাবে সব কিছু ভেঙে যাচ্ছে। তারপরেও, মন্তব্যগুলি কেবল সেখানে কেন কিছু ভাঙ্গা থেকে রোধ করবেন না তা ব্যাখ্যা করার জন্য রয়েছে।
মতামত নির্ভর করা যাবে না
মন্তব্যগুলি শেষ পর্যন্ত অকেজো এবং বিশ্বাস করা যায় না। মন্তব্যগুলি সাধারণত প্রোগ্রামগুলি চালনার উপায় পরিবর্তন করে না। এবং যদি তারা তা করে থাকে, তবে আপনার প্রক্রিয়া আরও সমস্যার সৃষ্টি করছে তবে এটি হওয়া উচিত। মন্তব্যগুলি আফটারেটস এবং এগুলি ছাড়া আর কিছুই হতে পারে না। কোডটি কম্পিউটারের দ্বারা প্রক্রিয়াজাতকরণের সমস্ত বিষয় হিসাবে গুরুত্বপূর্ণ।
এটি অ্যাসিনিন শোনাতে পারে তবে আমার সাথে সহ্য করুন। এই দুটি লাইনের কোনটি সত্যই গুরুত্বপূর্ণ?
// We don't divide by 0 in order to stop crashes.
return 1 / n;
এই উদাহরণে সমস্ত বিষয়টি হ'ল আমাদের 'এন' কী তা সম্পর্কে কোনও ধারণা নেই, 0 থাকার জন্য কোনও চেক নেই এবং সেখানে উপস্থিত থাকলেও, কোনও বিকাশকারীকে n = 0
0 এর পরে চেক স্থাপন করা থেকে বিরত রাখে না Thus সুতরাং মন্তব্যটি অকেজো এবং স্বয়ংক্রিয় কিছুই কখনও এটি ধরতে পারে না। কোনও মানক এটি ধরতে পারে না। মন্তব্যটি, যদিও বেশ সুন্দর (কারও কারও কাছে) পণ্যের ফলাফল নিয়ে কোনও ফল নেই।
গবেষণা বা পরীক্ষা চালিত উন্নতি
পণ্যটির ফলাফল কী? যে শিল্পগুলিতে কোড লেখা হচ্ছে সেগুলি আক্ষরিকভাবে কাউকে বাঁচাতে বা হত্যা করতে পারে সেগুলি কঠোরভাবে পরীক্ষা করা উচিত। কোড পর্যালোচনা, কোড পর্যালোচনা, পরীক্ষা, পরীক্ষা, কোড পর্যালোচনা, ইউনিট পরীক্ষা, ইন্টিগ্রেশন টেস্ট, ট্রায়ালস, মঞ্চায়ন, পরীক্ষার মাস, কোড পর্যালোচনা এবং একক ব্যক্তির বিচার, মঞ্চায়ন, কোড পর্যালোচনা, পরীক্ষার মাধ্যমে এবং এরপরে সম্ভবত শেষ পর্যন্ত এটি করা হয় উত্পাদন চলছে। মন্তব্যগুলির এর কোনওটির সাথে কোনও সম্পর্ক নেই।
আমি বরং কোড বলব যে কোনও মন্তব্য ছিল না, একটি স্পেসিফিকেশন ছিল, ইউনিট পরীক্ষা ছিল যা অনুমানটিকে যাচাই করেছিল, প্রোডাকশন ডিভাইসে কোড চালানোর ফলাফলের গবেষণা, তারপর ভাল নথিভুক্ত কোড যা কখনও পরীক্ষা করা হয়নি, বা তার তুলনা করার মতো কিছু ছিল না বিরুদ্ধে কোড।
ডকুমেন্টেশন যখন আপনি কোনও নির্দিষ্ট উপায়ে কেন কিছু করেছিলেন তা সনাক্ত করার চেষ্টা করছেন, তবে, আমি কয়েক বছর ধরে খুঁজে পেয়েছি যে ডকুমেন্টেশনটি সাধারণত কিছু 'চালাক' কেন করা হয়েছিল তা ব্যাখ্যা করার জন্য ব্যবহৃত হয়, যখন সত্যিকারের প্রয়োজন হয়নি যেভাবে লেখা হবে।
উপসংহার
যদি আপনি এমন একটি প্রতিষ্ঠানে কাজ করেন যা প্রতিটি লাইনের মন্তব্য করা প্রয়োজন আমি নিশ্চিত করছি আমি প্রকল্পের কমপক্ষে দু'জন সফটওয়্যার প্রকৌশলী ইতিমধ্যে পার্ল, লিস্প বা পাইথনে একটি অটো-ডকুমেন্ট প্রোগ্রাম লিখেছি যা লাইনটি কী করছে তার সাধারণ ধারণা নির্ধারণ করে , তারপরে সেই লাইনের উপরে একটি মন্তব্য যুক্ত করুন। কারণ এটি করা সম্ভব, এর অর্থ মন্তব্যগুলি অকেজো। কোডগুলি স্বয়ংক্রিয়ভাবে নথিভুক্ত করতে এই স্ক্রিপ্টগুলি লিখেছেন এমন প্রকৌশলীগুলি সন্ধান করুন এবং 'প্রত্যেক লাইনে অন মন্তব্য' কেন সময় নষ্ট করছে, কোনও মূল্য প্রদান করছে না এবং সম্ভাব্যভাবে আঘাত করছে তা প্রমাণ হিসাবে তাদের ব্যবহার করুন।
একদিকে আমি একটি ঘনিষ্ঠ বন্ধুকে একটি প্রোগ্রামিং কার্যের সাথে সহায়তা করছিলাম। তাঁর শিক্ষক একটি প্রয়োজনীয়তা রেখেছিলেন যে প্রতিটি লাইন নথিভুক্ত করতে হবে। সুতরাং আমি দেখতে পাচ্ছি যে এই চিন্তার প্রক্রিয়াটি কোথা থেকে আসবে। শুধু নিজেকে জিজ্ঞাসা করুন, আপনি কী করতে চেষ্টা করছেন, এবং এটি কি সঠিক জিনিস? তারপরে নিজেকে জিজ্ঞাসা করুন; এই প্রক্রিয়াটি সহ সিস্টেমকে 'গেম' করার কোনও উপায় আছে কি? যদি থাকে তবে তা কি আসলেই কোনও মান যুক্ত করছে? কেউ স্বয়ংক্রিয়ভাবে ইউনিট পরীক্ষাগুলি লিখতে পারে না যা পরীক্ষা করে যে কোডটি একটি নির্দিষ্ট নির্দিষ্টকরণের সাথে মিলিত হয় এবং যদি তারা সম্ভবত এটি করতে পারে তবে এটি কোনও খারাপ জিনিস হবে না।
যদি কোনও ডিভাইস কোনও নির্দিষ্ট শর্তে কাজ করতে হয় কারণ এটি মানুষের ভিতরেই থাকবে তবে এটি নিশ্চিত করার একমাত্র উপায় হ'ল এটি কয়েক বছর ধরে পরীক্ষা করা, পিয়ার রিভিউ, বিচার এবং তারপরে আবার কোড পরিবর্তন করে না। এই কারণেই নাসা এখনও এইরকম পুরানো হার্ডওয়্যার এবং সফ্টওয়্যার ব্যবহার করছে। যখন এটি জীবন বা মৃত্যুর কথা আসে আপনি কেবল 'কিছুটা পরিবর্তন না করে এটিকে পরীক্ষা করে দেখুন'।
মন্তব্যগুলির জীবন বাঁচানোর সাথে কোনও সম্পর্ক নেই। মন্তব্যগুলি মানুষের জন্য, মন্তব্যগুলি লেখার সময়ও মানুষ ভুল করে। মানুষের বিশ্বাস করবেন না। কিন্তু, মন্তব্য বিশ্বাস করবেন না। মন্তব্যগুলি আপনার সমাধান নয়।