একটি কোডিং শৈলী নীতি - যেমন একক প্রস্থান নীতি
যে লোকেরা এখনও একক প্রস্থান বা একাধিক প্রস্থান করতে আগ্রহী তা এখনও 1960 এর দশকের শেষদিকে আটকে আছে। তত্ক্ষণাত, আমরা যেমন স্ট্রাকচার্ড প্রোগ্রামার শুরুর দিকে এ জাতীয় আলোচনা গুরুত্বপূর্ণ ছিল, এবং সেখানে প্রচুর অসংখ্য শিবির ঘোষণা করছিল যে বোহম-জ্যাকোপিনি স্ট্রাকচার্ড প্রোগ্রামের তত্ত্বের পেছনের সন্ধানগুলি সমস্ত প্রোগ্রামিং কনস্ট্রাক্টের ক্ষেত্রে সর্বজনীনভাবে প্রযোজ্য ছিল না।
এটি এমন একটি বিষয় যা অনেক আগেই নিষ্পত্তি করা উচিত ছিল। ঠিক আছে, এটি নিষ্পত্তি হয়েছে (একাডেমিয়া এবং শিল্প উভয় ক্ষেত্রেই সুনির্দিষ্ট হওয়ার জন্য প্রায় 4 দশক), কিন্তু লোকেরা (যারা একেবারে সমর্থক বা বিপক্ষে) তারা মনোযোগ দিচ্ছে না।
আমার বাকী উত্তর সম্পর্কে, এটি সমস্ত আপেক্ষিক (সফ্টওয়্যারটিতে কী নেই?):
হ্যাঁ। প্রান্তের কেস এবং ভাষা-নির্দিষ্ট প্রোগ্রামিং কন্সট্রাক্টস সম্পর্কিত নির্দিষ্ট ক্যাভ্যাট সহ সাধারণ ক্ষেত্রে বেশিরভাগ সময়।
সবসময়, নাকি ঠিক মাঝে মাঝে?
অধিকাংশ সময়.
এটি কতটা পার্থক্য করে?
নির্ভর করে।
পাঠযোগ্য কোড বনাম অপঠনযোগ্য কোড। জটিলতা বৃদ্ধি (যা এখনই আমাদের জানা উচিত ত্রুটিগুলি প্রবর্তনের সম্ভাবনা বৃদ্ধি করে) বনাম সহজ জটিলতা (এবং ত্রুটিগুলির ছোট সম্ভাবনা।) যার সংকলকগুলি অন্তর্নিহিত রিটার্ন যুক্ত করে না (যেমন, পাস্কাল, জাভা বা সি #) এবং সেগুলি ডিফল্ট ইন ইন (সি এবং সি ++)।
শেষ পর্যন্ত, এটি কোনও কীবোর্ডের পিছনে পুরুষ / ঘন্টা দিয়ে সম্মানিত একটি দক্ষতা। কখনও কখনও, একাধিক রিটার্ন স্টেটমেন্ট যেমন ঠিক আছে (ঠিক তেমনি কিছু পাস্কালেসেক সিউডোকোডে) রাখা ভাল:
function foo() : someType
begin
if( test1 == true )
then
return x;
end
doSomethignElseThatShouldnHappenIfTest1IsTrue();
return somethingElse();
end;
উদ্দেশ্যটি স্পষ্ট, এবং অ্যালগরিদম যথেষ্ট ছোট এবং যথেষ্ট জটিল নয় যে এটি একটি 'পতাকা' ভেরিয়েবল তৈরির নিশ্চয়তা দেয় না যা একক রিটার্ন পয়েন্টে ব্যবহৃত পরিণামের মান রাখে। অ্যালগরিদম ত্রুটিযুক্ত হতে পারে, তবে এর কাঠামোটি যথেষ্ট সহজ যে কোনও ত্রুটি সনাক্ত করার প্রচেষ্টাটি (সম্ভবত সম্ভবত) তুচ্ছ।
কখনও কখনও এটি হয় না (এখানে সি-এর মতো সিউডোকোড ব্যবহার করা হয়েছে):
switch(someVal)
{
case v1 : return x1;
case v2 : return x2:
case v3 : doSomething(); // fall-through
case v4: // fall-through
case v5: // fall-through
case v6: return someXthingie;
...
...
default:
doSomething(); // no return statement yet
}
এখানে, অ্যালগরিদমের কোনও সাধারণ কাঠামো নেই এবং সুইচ স্টেটমেন্ট (একটি সি-স্টাইল এক) পতনের মধ্য দিয়ে ধাপগুলি মঞ্জুরি দেয় যা অ্যালগোরিদমের অংশ হিসাবে ইচ্ছাকৃতভাবে করা বা নাও করতে পারে।
হতে পারে অ্যালগরিদম সঠিক, তবে খারাপ লিখেছেন।
বা হতে পারে, প্রোগ্রামারের দক্ষতার বাইরে বাহ্যিক শক্তির দ্বারা, এটি বৈধভাবে প্রয়োজন অ্যালগরিদমের আসল (এবং সঠিক) উপস্থাপনা।
এটা ভুল হতে পারে।
এর যে কোনওটির সত্য উন্মোচন করতে আরও বেশি প্রচেষ্টা প্রয়োজন করতে পূর্ববর্তী উদাহরণের চেয়ে । এবং এর মধ্যে এমন কিছু মিথ্যা যা আমি দৃ lies়ভাবে বিশ্বাস করি (মনে রাখবেন যে এর ব্যাক আপ করার জন্য আমার কোনও আনুষ্ঠানিক গবেষণা নেই):
একটি কোড স্নিপেট যা সঠিক বলে ধরে নেওয়া হচ্ছে:
একাধিক রিটার্ন স্টেটমেন্টগুলি এই জাতীয় কোড স্নিপেটের পঠনযোগ্যতা এবং সরলতা বাড়ায়, যদি স্নিপেট সহজাতভাবে সহজ প্রবাহ কাঠামো সহ একটি সাধারণ অ্যালগরিদমকে উপস্থাপন করে। সহজ কথায়, আমি ছোট বলতে চাই না, তবে আমি সহজাতভাবে বোধগম্য বা স্ব-প্রমাণ , যার অর্থ পড়ার তুলনামূলক অস্বীকৃতি নয় (মানুষকে বমি করতে, কারও মাকে অভিশাপ দিতে বা কোনও বুলেট গ্রাহ্য করতে হয় না যখন তারা পড়তে হয়। )
একটি একক রিটার্ন বিবৃতি এ জাতীয় কোডের পাঠের সহজলভ্যতা এবং সরলতা বৃদ্ধি করে যদি রিটার্নের মানটি হয় অ্যালগোরিদমের পুরো প্রয়োগের সময় গণনা করা হয় বা যদি গণনার জন্য দায়ী অ্যালগরিদমের পদক্ষেপগুলি অ্যালগোরিদমের কাঠামোর মধ্যে এক জায়গায় একত্রে গ্রুপ করা যায় ।
একটি একক রিটার্ন বিবৃতি যেমন এক বা একাধিক ফ্ল্যাগ ভেরিয়েবলগুলিতে অ্যাসাইনমেন্টের প্রয়োজন হয়, যেমন অ্যাসোসিয়েশনগুলির অবস্থানগুলি অ্যালগোরিদম জুড়ে অভিন্ন অবস্থিত হয় না such
একাধিক রিটার্ন স্টেটমেন্টগুলি এ জাতীয় কোডের পাঠের সহজলভ্যতা এবং সরলতা হ্রাস করে যদি রিটার্নের বিবৃতিগুলি অ্যালগরিদম জুড়ে অভিন্নভাবে বিতরণ না করা হয় এবং যদি তারা পারস্পরিক এক্সক্লুসিভ ব্লকগুলির আকার নির্ধারণ করে যা তাদের মধ্যে আকার বা কাঠামোর মতো নয়।
এটি প্রশ্নের মধ্যে একটি স্নিপেটের জটিলতার সাথে নিবিড়ভাবে সম্পর্কিত। এবং এটি ঘুরে দাঁড়ানোর সাথে সম্পর্কিত চক্রবিজ্ঞান এবং হাল্সস্টিড জটিলতা ব্যবস্থার সাথে। এ থেকে, কেউ নিম্নলিখিতটি পর্যবেক্ষণ করতে পারে:
সাব্রোটিন বা ফাংশনটির আকার যত বড়, এর অভ্যন্তরীণ নিয়ন্ত্রণ প্রবাহ কাঠামো বৃহত্তর এবং জটিল এবং আপনি একাধিক বা একক রিটার্নের বিবৃতি ব্যবহার করবেন কিনা তা নিয়ে একটি প্রশ্নের মুখোমুখি হবেন।
এর উপসংহারটি হ'ল: একটি কাজ এবং কেবল একটি জিনিস (এবং এটি ভালভাবে করা) করে আপনার ফাংশনগুলি ছোট রাখুন। যদি তারা নামমাত্র ছোট চক্রবিজ্ঞান এবং হালসস্টিড জটিলতা মেট্রিকগুলি প্রদর্শন করে তবে কেবল তারা সম্ভবত সঠিক হতে পারে এবং বোধগম্য কাজগুলির বাস্তবায়ন হতে বাধ্য নয়, তাদের অভ্যন্তরীণ কাঠামোও তুলনামূলকভাবে স্ব-স্পষ্ট হবে।
তারপরে, এবং কেবলমাত্র তখনই আপনি খুব সহজে এবং খুব বেশি ঘুম না হারিয়েই সিদ্ধান্ত নিতে পারেন যে কোনও একটির পছন্দ অনুসারে ত্রুটিগুলি প্রবর্তনের খুব বেশি ঝুঁকি না চালিয়ে একক রিটার্ন এবং একাধিক রিটার্ন ব্যবহার করবেন কিনা you
এগুলির মধ্যে একটিও লক্ষ্য করা যায় এবং পরামর্শ দেওয়া যায় যে লোকেরা যখন একক রিটার্ন বা একাধিক রিটার্ন ইস্যু নিয়ে লড়াই করে, কারণ এটি হয় - অনভিজ্ঞতা, মূর্খতা বা কাজের নৈতিকতার অভাবে - তারা পরিষ্কার কোড লিখেন না এবং লেখার ঝোঁক রাখেন না সাইক্লোমেটিক এবং হালস্টেড পদক্ষেপের সম্পূর্ণ উপেক্ষা সহ ভৌতিক কাজ।