কারও কি কার্যকরী ভাষায় আলাদাভাবে মন্তব্য করা উচিত? [বন্ধ]


25

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

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

একটি কার্যকরী প্রোগ্রাম মন্তব্য করার সঠিক উপায় কি? আমার কি পুনরাবৃত্ত প্রোগ্রামিংয়ের মতো একই পদ্ধতি ব্যবহার করা উচিত?


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

2
আমি একমত নই যেহেতু ফাংশনাল ল্যাঙ্গেজগুলির কোনও পার্শ্ব প্রতিক্রিয়া নেই তবে শেষ পর্যন্ত এটি কী করবে ঠিক তাই আপনি প্রদত্ত স্বাক্ষরের সাথে একটি মান ফিরিয়ে দিন
টম স্কুইয়ার্স

8
সমস্ত কার্যকরী ভাষা খাঁটি নয়, কিছুতে এর পার্শ্ব প্রতিক্রিয়া রয়েছে।
থানোস পাপাথনসিয়ো

1
তবে আপনি কী মন্তব্য করতে চান তা মন্তব্য করুন ... এটি
উত্সাহব্যঞ্জক

1
আপনার প্রকল্পের অন্যান্য সদস্য যারা কার্যকরী ভাষার সাথে পরিচিত নয় তাদের ঝুঁকি চালায়? তাদের কিছু অতিরিক্ত সাহায্যের প্রয়োজন হতে পারে।
JeffO

উত্তর:


84

ফাংশনটির নাম বলতে হবে আপনি কী করছেন।

আপনি কীভাবে এটি করছেন তা বাস্তবায়ন আপনাকে জানাবে ।

আপনি কেন করছেন তা বোঝাতে মন্তব্যগুলি ব্যবহার করুন ।


1
দুর্দান্ত উত্তর, কী কোড এবং কীভাবে (যা কোড থেকেই প্রমাণিত হয়) তা ব্যাখ্যা করে তবে কেন আমাকে অনুমান করতে ছাড়ছে তা মন্তব্য সহ কোডড জঞ্জাল দেখে আমাকে মেরে ফেলে।
এরিক উইলসন

32
এবং এটি প্যারাডাইম নির্বিশেষে সত্য
জে কে।

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

3
যদিও এই উত্তরটি খুব সাধারণ এবং সরলতার অনেক মূল্য রয়েছে, এটি সম্পূর্ণ সত্য নয়। একটি ফাংশন নাম প্রায়শই পর্যাপ্ত বিশদে "কী" বর্ণনা করে না এবং বর্ণনা করতে পারে না, তাই ডকুমেন্টেশন প্রায়শই প্রয়োজনীয় (যেমন প্রান্তের ঘটনাগুলি বর্ণনা করার জন্য)। ডকুমেন্টেশন প্রায়শই মন্তব্যে sertedোকানো হয়।
লুস্কুবাল

2
যুক্তিযুক্তভাবে, ফাংশনটির নামটি কেন এটি করছে তা ব্যাখ্যা করা উচিত - যখন এটি সম্ভব হয়।
ইয়াম মার্কোভিচ

14

সেখানে স্পষ্টভাবে হয় , এই প্রশ্নের একটি বিন্দু হিসাবে কার্মিক প্রোগ্রাম সাধারনত অনুজ্ঞাসূচক বেশী চেয়ে ভিন্ন বিমূর্ততা স্তর রয়েছে।

এই কারণে, ডকুমেন্টেশনের আরও একটি স্টাইল প্রয়োজন। পুনরাবৃত্তিমূলক প্রোগ্রামগুলিতে একটি মন্তব্য নিম্নলিখিত কোডের মতো সহায়ক হতে পারে, কারণ কোডের সারমর্মটি বয়লারপ্লেটের পিছনে লুকানো রয়েছে:

// map 'toUpperCase' over 'container' yielding 'result'
Container result = new Container();
for (int i=0; i < container.size(); i++) { 
             result.addToTail(container.atElement(i).toUpperCase());
}

তবে এটি কার্যকরী ভাষায় স্পষ্টতই বাজে কথা:

-- map 'toUpperCase' over 'list'
let result = map toUpperCase list

উত্তম:

-- we need the FooBars in all uppercase for the Frobnitz-Interface
let result = map toUpperCase list

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

3
তোমার দাদা ঠিক আছে। আমি কেবলমাত্র এমন নির্দিষ্ট মন্তব্যগুলি প্রদর্শন করতে চেয়েছিলাম যা তবুও আবশ্যক রাজ্যে তাত্পর্যপূর্ণ বলে মনে করে ফাংশনালের ক্ষেত্রে একেবারেই অকেজো।
ইনগো

11

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


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

3

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

// returns a list of Employees    <-- not necessary
def GetEmployeeList: ...

// returns a list of Employees sorted by last name    <-- necessary
def GetEmployeeList: ...

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


2

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

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


1

আমি আমার সমস্ত কোড নথিভুক্ত করার জন্য একই পন্থা গ্রহণ করি:

  • বর্ণনামূলক নাম ব্যবহার করুন,
  • জটিল যুক্তি এড়াতে না পারলে কোনও যুক্তিসঙ্গত জটিল যুক্তির আগে মন্তব্য যুক্ত করুন,
  • পুরো সিস্টেমের একটি ওভারভিউ লিখুন,

যদি নাম এবং প্রকারের স্বাক্ষরটি আপনাকে সঠিকভাবে না বলে দেয় তবে ফাংশনটি কী করে, আপনি সাধারণত এটি ভুল করছেন।


0

25 বছর বয়সে আপনি জিনিসগুলি আরও ভালভাবে স্মরণ করতে চান। আপনার বয়স বাড়ার সাথে সাথে আপনি লিগ্যাসি কোড সহ একাধিক সিস্টেমের সাথে জড়িত রয়েছেন (হ্যাঁ, আপনি আজ যে কোডটি লিখবেন তা 10-15 বছরের মধ্যে উত্তরাধিকার কোড হবে) যদি মন্তব্য থাকে তবে এটি খুব সহায়ক হতে পারে।

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