"//…" কোড ব্লকের শেষে মন্তব্যগুলি} - ভাল না খারাপ? [বন্ধ]


18

আমি প্রায়শই এই জাতীয় মন্তব্য ব্যবহার করতে দেখেছি:

function foo() {
   ...
} // foo

while (...) {
   ...
} // while

if (...) {
   ...
} // if

এবং কখনও কখনও এমনকি পর্যন্ত হিসাবে

if (condition) {
   ...
} // if (condition)

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

তাহলে লোকেরা কেন এটি ব্যবহার করে? আমাদের এটি ব্যবহার করা উচিত, না এটি খারাপ অভ্যাস?


পিএইচপি-তে, আমি নিয়ন্ত্রণ কাঠামোর জন্য বিকল্প সিনট্যাক্স ব্যবহার করিif(condition): ... else: ... endif;
সিস্টেমোভিচ

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

4
@ ক্রেইগ: পিএইচপি দ্বারা স্থানীয়ভাবে সমর্থিত যে কোনও ভাষা নির্মাণ "চূড়ান্তভাবে আনস্ট্যান্ডার্ড" নয় - পিএইচপি ইন্টারপ্রেটার "স্ট্যান্ডার্ড" কী তা নির্ধারণ করে
বিলি ওনিল

আদা সবচেয়ে নির্মানের শেষ জন্য নির্দিষ্ট মার্কার আছে: if ... then ... end if; while ... loop ... end loop; procedure Foo is ... end Foo;। আমি দেখতে পেলাম যে এটি সুস্পষ্টভাবে সহায়তা করে (এবং এটি সংকলক দ্বারা পরীক্ষা করা হয়েছে, কোন মন্তব্য নেই)।
কিথ থম্পসন

উত্তর:


32

আমি বলব যদি আপনার কোডটি এত দীর্ঘ হয় যে আপনি সহজেই আপনার ধনুর্বন্ধনী অনুসরণ করতে না পারেন, বেশিরভাগ ভাষার জন্য আপনার কোডটির পুনঃনির্মাণের প্রয়োজন।

তবে, টেম্প্লেটিং ভাষায় (পিএইচপি এর মতো) এটি বৈধ হতে পারে কারণ আপনার এইচটিএমএলের একটি বৃহত ব্লক থাকতে পারে যা শর্ত বা লুপ কাঠামোর শুরু এবং শেষকে পৃথক করে।


5
পিএইচপি-র জন্য সম্পূর্ণ বৈধ পয়েন্ট, যদি আপনি এইচটিএমএল মিশ্রিত পিএইচপি ব্যবহার করেন। গ্রিফিন্ডারের জন্য ১ পয়েন্ট।

3
এমনকি এইচটিএমএল মিশ্রিত একটি টেম্পলেটিং ভাষা হিসাবে পিএইচপি দিয়ে আপনি এখনও ইনডেন্ট করতে পারেন। আপনার পিএইচপি ব্যবহার করে টেম্পলেটিং ভাষা হিসাবে ব্যবহার করার সময় আপনার ধনুর্বন্ধনী ব্যবহার করা উচিত নয়, বরং এতে while(): endwhile;এবং foreach(): endforeach;অন্যান্য
নির্মাণগুলিও করা হয়

9
আমি সত্যিই দেখতে পাচ্ছি না কেন আপনাকে পিএইচপি পুনর্নির্মাণ করা উচিত নয়। সম্ভবত অন্য ভাষায় into
টম হাটিন - 13

@ এইচটিবা: আমি বিশ্বাস করতে পারি না আমি এই মুহুর্তে পিএইচপি ব্যবহার করেছি এবং সেগুলি সম্পর্কে জানি না। ধন্যবাদ! ইনডেন্টিং সম্পর্কিত, আমি শর্তসাপেক্ষ এইচটিএমএলটিকে পিএইচপি তৈরির সাথে তাল মিলিয়ে বাকী পৃষ্ঠার মতোই ইন্টেন্ট করা পছন্দ করি।
ম্যাট এলেন

3
@ টম: আমি হেসেছি, তবে নিজেকে অপরাধী মনে হচ্ছে। : পি

17

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


15

এটি একটি ভয়ঙ্কর অনুশীলন যা বহু কারণ দ্বারা অচল হয়ে যায়।

  • ক্যারেটটি যখন কোনও চিহ্নে থাকে তখন সর্বাধিক আধুনিক আইডিই সম্পর্কিত ব্রেসটিকে হাইলাইট করে।
  • আপনি যদি পরিষ্কারভাবে কোডিং করছেন, আপনি খুব কমই এমন জায়গা খুঁজে পাবেন যেখানে আপনার পদ্ধতিটি 10 ​​টি লাইনের বেশি।

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

এটি ব্যবহারের বিরুদ্ধে উচ্চভাবে পরামর্শ দিন।


4
আমার এক সহকর্মী (জাভা বিকাশকারী) আছেন এটি করেন। // এর জন্য এবং // এর পরিবর্তে যদি তিনি // রফ এবং // ফাই ব্যবহার করেন। এটি আমাকে পাগল করে তোলে এবং সে সর্বত্র তা করে।
জয়

হ্যাঁ আমার এটির উপর জোর দিয়েছিল। AAAAAGHHHHH।
রিগ

2
জাভা বা জাভা প্রোগ্রামারগুলির সাথে এটির আসলে কোনও সম্পর্ক নেই এবং জাভাতে প্রোগ্রামিং করার সময় এটি কোনও সাধারণ বা কোনও ডি-ফ্যাক্টো স্ট্যান্ডার্ড জিনিস নয়।
জেস্পার

1
"একটি ভয়ঙ্কর অনুশীলন" এর জন্য +1,000।
স্কানলিফ

6

কোডটি তার লেখা থেকে 10 গুণ বেশি পঠিত হয়।

যদি এটি পড়া সহজ করে তোলে তবে এটি করুন।

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

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


6
এই হল খারাপ। এমনকি প্রাথমিক স্তরের পাঠ্যপুস্তকগুলিও এই নৃশংসতা করে না। "কোডটি তার লেখা থেকে 10 গুণ বেশি পড়া হয়" ... এই কোড ক্রাফ্টের সাহায্যে পাঠকের সময় নষ্ট না করার আরও বেশি কারণ।
টমাস এডিং

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

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

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

1
@ ত্রিনিথিস দুঃখিত, আপনি যখন বোঝাতে চাইছেন তখন কী বোঝাতে চাইছেন তা আমি ঠিক করতে পারি না it's আমি মনে করি আমি উল্লেখ করেছি যে রেফ্যাক্টরিং কোডের অন্যান্য উপায়ও রয়েছে যা ডেভস এটি শিখতে পারে।
লুনিভোর

4

আমি এই ধরণের জিনিস দিয়ে পূর্ণ একটি বড় (সি ++) কোড বেস পেয়েছি:

int Class::AccessorMethod(void)
{
    return privateValue;
}//end AccessorMethod

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


হুম, আমি অনুমান করি যে আমি এই সাইটে কিছু ফর্ম্যাটিং পাই না; প্রতিটি ব্রেস আপ সেখানে নিজস্ব লাইনে থাকা উচিত, পদ্ধতি শরীর হিসাবে।
পিএসইউ

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

4

সি ++ এ দুটি হোল্ডওভার রয়েছে যেখানে এটি এখনও কার্যকর এবং "আপনার কোডটি বিভক্ত করুন" এর পরামর্শের প্রয়োজনীয়তা নেই:

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

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


নাম স্থান মন্তব্য এবং কারণের জন্য +1। আমি কেবল এটিই করি এবং একই কারণে
জনবি

+ দীর্ঘ সুইচ স্টেটমেন্ট।
কোয়ান্ট_দেব

1

আমার জন্য কোডটি আপনার নির্দিষ্ট করা মত একটি মন্তব্য যুক্ত করতে বিভ্রান্ত হতে হবে।

যদি এটি কেবল // আইএফ বিবৃতি বলে। তারপরে আপনি অবাক হয়ে বললেন কেন এটি প্রথম স্থানে রয়েছে।


আমি সম্মত, এটি একটি লাইনের মতো মনে হচ্ছে যা কোনও পুরাতন স্কুলের চেয়ে মন্তব্য করা হয়েছিল//endif
স্টুপারউসার

1

আপনার ধনুর্বন্ধনীটি কী বন্ধ করছে তা দেখার বিকল্পটির কাছে একই কলামে খোলার বন্ধটি রয়েছে close আমি যে অনেক পরিষ্কার এবং আরও পাঠযোগ্য।

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


1

এটি 80x24 চরিত্রের টার্মিনাল উইন্ডোতে কাজ করার পুরানো দিনগুলির মূলত একটি হোল্ডওভার over এখনও, আমি আমার বেশিরভাগ কাজ ভিএম ব্যবহার করে একটি টার্মিনাল সেশনে করি এবং আমি অধিবেশনটিকে তিন বা চারটি সাবউইন্ডোতে বিভক্ত করতে পারি, তাই আমি কেবলমাত্র একবারে কয়েকটি লাইন দেখতে পারি।

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


0

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


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

সম্ভবত এটি কোনও পাঠ্যপুস্তকে ব্যবহৃত হয়েছিল তাই একগুচ্ছ মানুষ এটি ব্যবহার করে কলেজ থেকে বেরিয়ে এসেছিল? এটি একটি প্রবর্তনীয় পাঠ্যে একটি জায়গা থাকতে পারে। প্রিপ্রোসেসরে যুক্তিসঙ্গতভাবে বৈধ, বিশেষত # ইফদেফ / এন্ডিফ প্রহরীদের অন্তর্ভুক্ত
মার্টিন বেকেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.