মন্তব্য করা সংক্ষিপ্ত অভিনব কোড বনাম বনাম uncommented আর বুঝতে সহজ কোড - কোনটি পছন্দ?


18

কখনও কখনও একটি অ্যালগরিদম দুটি উপায়ে লেখা যেতে পারে:

  • সংক্ষিপ্ত, অভিনব উপায়; অথবা
  • দীর্ঘ, সহজে বোঝার উপায়।

উদাহরণস্বরূপ, এখানে একটি লম্বা একটি স্ট্রিং অনুলিপি এর সহজ উপায় আছে sourceথেকে destসি:

*dest = *source;
while (*source != '\0') {
    source++;
    dest++;
    *dest = *source;
} (true);

এবং এখানে একটি সংক্ষিপ্ত, অভিনব উপায়।

// Copy string source to dest
while (*dest++ = *source++);

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

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

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

সম্পাদনা 2: এসও থেকে আমি এখানে একটি নতুন পরীক্ষা পেয়েছি :

মন্তব্য অভিনব সংস্করণ:

//direct formula for xoring all numbers from 1 to N
int Sum = (N & (N % 2 ? 0 : ~0) | ( ((N & 2)>>1) ^ (N & 1) ) );

অ-মন্তব্য করা দীর্ঘ সংস্করণ:

int Sum = 0;
for (int i = 1; i < N; ++i)
{
   Sum ^= i; //or Sum = Sum ^ i;
}

2
@ গ্যাবলিন: "ভাল" একটি শব্দ, তবে এটি "গুড" থেকে কিছুটা আলাদা অর্থের সাথে একটি বিশেষণ এবং এটি আর ব্যাপকভাবে ব্যবহৃত হয় না (কমপক্ষে মার্কিন যুক্তরাষ্ট্রে) "ভাল" এর ক্রিয়াপদটি "ভাল," যেমন "ভাল মন্তব্য করা কোড"।
জন এম গ্যান্ট

@ জন: হ্যাঁ, অবশ্যই আমি সেই অনুযায়ী প্রশ্ন আপডেট করেছি। ধন্যবাদ।
গ্যাবলিন

2
স্বল্পতম পথটি কীভাবে 'অভিনব'? এটি সি কোডের একটি পাঠ্য-পুস্তক টুকরা যা সি কে দাবি করে যে কেউ কোনও সমস্যা ছাড়াই পড়তে সক্ষম হবে। তৃষ্ণার অর্থ 'অভিনব' নয়।
জেবিআরওয়িলকিনসন

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

@ গ্যাবলিন: আপনার সম্পাদনাটি বর্তমান উত্তরগুলির সাথে আপস করে।
ম্যানেরো 21

উত্তর:


28

আমি সাধারণত নিজস্ব পদ্ধতিতে অভিনব কোডটি বের করতে পছন্দ করব ..

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

char *copy_string(char *s, const char *t) {    
    while (*s++ = *t++); 
    return s;
}

3
দুর্দান্ত পয়েন্ট। স্ব-অন্তর্ভুক্ত কোড ফ্যাক্টরিং মন্তব্যগুলির চেয়ে অনেক ভাল better সংকলক প্রয়োজনে এটি কীভাবে ইনলাইন করতে হয় তা জানে।
dbkk

হ্যাঁ, মন্তব্যটি অপ্রচলিত করার এক দুর্দান্ত উপায়। তবে এটি সত্ত্বেও, আপনি কি সর্বদা লম্বা কোডের চেয়ে অভিনব কোডটি পছন্দ করবেন?
গ্যাবলিন

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

অবশ্যই আপনার ফাংশনটির নাম রাখা উচিত 'strcpy'?
জেবিআরওয়িলকিনসন

কোডটির টুকরোটিতে একটি ত্রুটি রয়েছে। ফেরত কি? কী ফিরিয়ে দেওয়ার কথা ছিল? কেবল এটিকে একটি অকার্যকর পদ্ধতি হিসাবে তৈরি করুন এবং এটি দিয়েই করুন;)
খ্রিস্টান মান

10

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

আমি একটি বাস্তব জীবনের উদাহরণ আছে। আমাদের পণ্যটিতে আমাদের নীচের কোডের স্নিপেট ছিল:

if (++someCounter < MAX_VALUE) {
    // Do something that has to be done only MAX_VALUE times
}

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

if (someCounter < MAX_VALUE) {
    ++someCounter;
    // Do whatever it is we came here for
}

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

সুতরাং - আমি সমস্ত সরলতা এবং স্বচ্ছতার জন্য।

সম্পাদনা করুন: ওহ, এবং মন্তব্য সম্পর্কে - এটি কিছু যায় আসে না। অনেক লোক যেভাবেই মন্তব্য পড়বে না ( http: //www.javasp विशेषज्ञ ists.co.za/archive/Issue039.html ) এবং যারা আপনার কোড মন্তব্য ছাড়াই বুঝতে পারবেন না, তারা তাদের সাথে এটি যথেষ্টভাবে বুঝতে পারবেন না যাতে তারা এটি বজায় রাখতে পারে লক্ষ্যে পৌঁছাতে সাহায্য মানুষ দেখতে , যে নির্দিষ্ট কোড "সঠিক" হয় মন্তব্য নেই যে সাহায্য করতে পারেন না।


1
"আমাদের ক্লায়েন্টের উত্পাদন সিস্টেমকে চূর্ণবিচূর্ণ করেছে" - এটি বেশ খারাপ: -এস

"কোডের সংক্ষিপ্ত সংস্করণে সমস্যাটি বাদ দিয়ে কিছু প্রোগ্রামারকে পড়া আরও কঠিন" - কোডের যে কোনও অংশটি "কিছু প্রোগ্রামারদের পক্ষে" পড়ার পক্ষে কঠিন হতে পারে। আপনাকে কেবল বোকা পর্যাপ্ত প্রোগ্রামার খুঁজে পেতে হবে। কোডটি সর্বনিম্ন ডিনোমিনেটরে ডুববেন না।
কোয়ান্ট_দেব

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

@ মিশেলবার্গওয়ার্ট আমি প্রতিটি সম্ভাব্য পরিস্থিতিতে অন্ধভাবে কর্নিগানের ডিকুম প্রয়োগ করব না। ওপিএস উদাহরণটি একটি ফাংশন যা "যতটা সম্ভব চালাকতার সাথে লেখা" (বা এটির নিকটবর্তী) এবং তবুও কোনও ডিবাগিংয়ের প্রয়োজন হলে এটি ডিবাগ করা বেশ সহজ হওয়া উচিত। অন্যদিকে, জটিল বিট-টুইডলিং অনেলাইনারগুলি খুব চালাক হতে পারে তবে এটি অবশ্যই ডিবাগ করা আরও কঠিন হবে। (এছাড়াও: কর্নিঘান ধরে নিয়েছেন যে কোডিং দক্ষতা = ডিবাগিং দক্ষতা It এটির ক্ষেত্রে হবে না I've আমি সফলভাবে কোডটি ডিবাগ করেছি আমি লিখতে সক্ষম হত না))
কোয়ান্ট_দেব

6

আমি সাধারণত দীর্ঘতর সংস্করণ পছন্দ করি। দুটি মূল কারণ মনে মনে বসন্ত:

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

উভয় দুনিয়ার সেরা জন্য, কোনও ফাংশনে কোডটি মোড়ক করুন, যার নাম আপনার পক্ষে মন্তব্য করেছে:

void copy_string(char *s, char *t)
{
    *s = *t;
    while (*t != '\0') {
        t++;
        s++;
        *s = *t;
    }
}

এটি না করার একমাত্র কারণ হ'ল পারফরম্যান্স যদি কোনও সমস্যা হয়ে থাকে এবং সঠিকভাবে প্রোফাইলিং ফাংশনটিকে ওভারহেডকে তাৎপর্যপূর্ণ বলে দেখায়।


1
ইনলাইন কি এটি নয়?
আন্টসান

প্রকৃতপক্ষে, যদিও ইনলাইনিং সমস্যাগুলির নিজস্ব ভাগ নিয়ে আসে, যেমন শিরোনাম ফাইলগুলিতে ফাংশন বডিটি প্রকাশ করতে। আধুনিক সংকলকগুলি স্বয়ংক্রিয়ভাবে যেখানে আপনার পক্ষে সংজ্ঞায়িত সেখানে ইনলাইন স্টাফগুলি নেই?
পল স্টিফেনসন

4

যাই হোক না কেন পরিষ্কার। প্রায়শই এটি কোডের স্নিপেট বুঝতে সহজতর একটি কমপ্যাক্ট যার জন্য কোনও মন্তব্য প্রয়োজন হয় না ... আপনার দ্বিতীয় উদাহরণের মতো।

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

মন্তব্যগুলিতে কোড থেকে স্পষ্ট যে কোনও কিছুই বলা উচিত নয়, যা পাঠককে একই জিনিস দু'বার পড়তে বাধ্য করে। আমার কাছে প্রথম স্নিপেটের স্পষ্টতা দরকার। কেন বিকাশকারী অ্যাসাইনমেন্টটির do...whileসদৃশ অপসারণ করতে একটি লুপ ব্যবহার করেন নি *s = *t;? এটি একটি স্ট্রিং অনুলিপি প্রয়োগ করছে তা বুঝতে আমাকে আরও কোড পার্স করতে হবে। একটি মন্তব্য সংক্ষিপ্ত কোডের চেয়ে এই দীর্ঘ কোডটিতে আরও সহায়ক হবে।

দ্বিতীয় স্নিপেটের মন্তব্যটি প্রায় বেপরোয়া হয়ে উঠেছে যেহেতু লুপটি ব্যবহারিকভাবে মূর্খতাযুক্ত, তবে এটি কোডটি একটি উচ্চ স্তরে কী করে তা বলে যে কোডটি নিজেই এটি একটি দরকারী মন্তব্য করে তোলে।


বিকাশকারী (আমাকে) কেবলমাত্র ব্যবহার do ... whileকরেননি কারণ আমি প্রশ্নটি লেখার সময় এটি ভেবে দেখিনি। যে ইশারা জন্য ধন্যবাদ। । দ্বিতীয় স্নিপেটটি আপনার কাছে স্পষ্ট হতে পারে তবে এটি অবশ্যই আমার পক্ষে নয়।
গ্যাবলিন

4

সমস্যাটি হ'ল short fancy codeএটির কোনও পরিষ্কার সংজ্ঞা নেই যেহেতু এটি প্রোগ্রামারের স্তরের উপর নির্ভর করে। কিছু লোকের একটি while(*s++ = *t++);এক্সপ্রেশন বুঝতে সমস্যা না থাকলেও অন্যরা তা করবে।

ব্যক্তিগতভাবে আমি while(*s++ = *t++);নিখুঁতভাবে পঠনযোগ্য এবং আরও পড়ার পক্ষে আরও কঠিন। অন্যরা যদিও রাজি হতে পারে না।

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


এটি আমাকে দুঃখ দেয় যে এগুলির অনেক উত্তরের একটি থিম "বিকাশকারীরা সি
স্ট্রাইকপি

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

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

2

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

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

while (*dest++ = *source++)
    ;

অথবা এমনকি:

while (*dest++ = *source++)
    ; /* no body */

কিছু লোক পরিবর্তে ব্রেস ব্যবহার করতে পছন্দ করে:

while (*dest++ = *source++)
    {}

আপনার পছন্দ মতো সঠিক বিন্যাস নির্বিশেষে, এ জাতীয় জিনিসগুলির সাথে যথেষ্ট ভুল করা হয়েছে:

if (x>y);
     x = z;

... এটি নিশ্চিত হওয়া জরুরী যে 1) এটি যে স্পষ্টতই কোনও প্রবাহ-নিয়ন্ত্রণ দ্বারা নিয়ন্ত্রিত, এবং 2) এটি স্পষ্টতই যে কোডটি কী দ্বারা নিয়ন্ত্রিত হয়েছিল তা জেনে রচিত হয়েছিল, সুতরাং যে কেউ এটি পড়তে চেষ্টা করে সময় নষ্ট করে না তারা ঠিক একটি বাগ খুঁজে পেয়েছে কিনা তা বের করার জন্য।


হ্যাঁ, এই নির্দিষ্ট উদাহরণটির পূর্ববর্তী ক্ষেত্রে, 'অভিনব' সংস্করণটি সম্ভবত দীর্ঘ সংস্করণের চেয়ে বেশি পঠনযোগ্য। আমি যদি আরও ভাল উদাহরণটি ভাবতে পারি তবে আমি এই মুহুর্তে অক্ষম। তবে আমি এটিকে দীর্ঘ করার জন্য "আমার পথ থেকে দূরে যাইনি" - এভাবেই আমি কমপক্ষে প্রাথমিকভাবে স্ট্রিং কপি লিখব initially এটি সর্বোত্তম পন্থা নাও হতে পারে তবে এটি প্রয়োজনের চেয়ে বেশি করে তৈরি করা হয়নি intention
গ্যাবলিন

2
Keep it simple, stupid!

আপনার কোড কী করে অন্য কোনও প্রোগ্রামার বুঝতে পারে তা নিশ্চিত করুন Make এবং এটি এক নজরে থাকলে আরও ভাল (এটি এখানে ভাল নাম এবং মন্তব্য তাদের নিজের মধ্যে আসে)।

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

এই পরিস্থিতিতে আমি প্রায়শই পাইথনের জেনটি উল্লেখ করি । নির্দিষ্টভাবে:

Explicit is better than implicit.
Simple is better than complex.

1

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

বিকল্প পাঠ


1

এটি অবশ্যই সম্পূর্ণরূপে পরিস্থিতির উপর নির্ভর করে। তবে সাধারণভাবে, আমি এটি আঙ্গুলের একটি ভাল নিয়ম বলে মনে করি:

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

~ ব্রায়ান কর্নিগান


আরও কমপ্যাক্ট কেআইএসএস সংক্ষিপ্তর চেয়ে লম্বা তবে আরও অর্থবহ, মার্জিত এমনকি - আশা করি ওখানে
বিড়ম্বনাটি

0

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


0

আমি কখনও মন্তব্য বিশ্বাস করতে শুরু করছি। সবসময় প্রায়শই, কোড আপডেট হওয়ার সাথে সাথে মন্তব্যগুলি আপডেট হয় না এবং প্রচুর পুরানো হয়ে যায় বা ক্লায়েন্ট / পরিচালনার নিয়মগুলি প্রতিনিধিত্ব করে যা আর প্রাসঙ্গিক নয়।

এটি এমন কিছু ক্ষেত্রে পৌঁছে গেছে যেখানে মন্তব্যগুলি এমন কোডের সাথেও মেলে না যেগুলি তারা আর বর্ণনা করছে।

যদি আমাকে সংক্ষিপ্ত / অভিনব এবং দীর্ঘতর / সহজ বোঝার মধ্যে বেছে নিতে হয় তবে সত্যিকারের কোনও ভাল কারণ না থাকলে আমি সর্বদা উত্তরকে বেছে নেই ।


0

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

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