কেন একটি ফাংশন শুধুমাত্র একটি প্রস্থান পয়েন্ট থাকা উচিত? [বন্ধ]


98

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

আমি ভেবেছিলাম সিএসের সাথে এটির কিছু করার ছিল তবে এই প্রশ্নটি সিস্টি স্ট্যাকেক্সচেঞ্জে ছড়িয়ে দেওয়া হয়েছিল।



6
উত্তরটি হ'ল কোনও উত্তর নেই যা সর্বদা সঠিক। আমি প্রায়শই ডাব্লু / একাধিক প্রস্থানগুলি কোড করা সহজ মনে করি। আমি এটিও খুঁজে পেয়েছি (উপরের কোডটি আপডেট করার সময়) যে একই একাধিক প্রস্থানের কারণে কোডটি সংশোধন / প্রসারিত করা আরও কঠিন ছিল। এই কেস-কেস কেস সিদ্ধান্ত গ্রহণ করা আমাদের কাজ। যখন কোনও সিদ্ধান্তের সর্বদা একটি "সেরা" উত্তর থাকে, তখন আমাদের প্রয়োজন হয় না।
জেএস।

4
@ ফিনিশ ফ্যাসিবাদী মোডগুলি শেষ দুটি প্রশ্ন সরিয়ে ফেলেছে, তা নিশ্চিত করার জন্য তাদের আবার এবং আবারও উত্তর দেওয়া হবে
মার্টেন বোদেউইস

প্রশ্নের মধ্যে "তর্ক" শব্দটি সত্ত্বেও, আমি সত্যিই এটি একটি মতামত ভিত্তিক প্রশ্ন মনে করি না। এটি ভাল নকশা ইত্যাদির সাথে বেশ প্রাসঙ্গিক আমি এটিকে বন্ধ করার কোনও কারণ দেখি না, তবে ডাব্লু / ই।
Ungeheuer

4
একটি একক বহির্গমন পয়েন্টটি ডিবাগিং, পঠন, পারফরম্যান্স পরিমাপ এবং সুরকরণ, রিফ্যাক্টরিংকে সহজ করে তোলে, এটি বস্তুনিষ্ঠ এবং বস্তুগতভাবে তাত্পর্যপূর্ণ। প্রাথমিক রিটার্নগুলি (সাধারণ আর্গুমেন্ট চেকের পরে) ব্যবহার করা উভয় শৈলীর বুদ্ধিমান মিশ্রণ তৈরি করে। একক বহির্গমন পয়েন্টের সুবিধাগুলি দেওয়া, আপনার কোডটি রিটার্ন মান সহ ফাঁক করা কেবল একটি অলস, slালু, অযত্ন প্রোগ্রামার - এবং কমপক্ষে সম্ভবত কুকুরছানা পছন্দ না করার প্রমাণ evidence
রিক ও'শিয়া

উত্তর:


109

বিভিন্ন চিন্তার স্কুল রয়েছে এবং এটি মূলত ব্যক্তিগত পছন্দের দিকে নেমে আসে।

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

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

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

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


4
বিবৃতি ছড়িয়ে singe exitদৃষ্টান্তে গভীর বাসা বাঁধতে পারে go to। এছাড়াও, ফাংশনটির স্থানীয় Errorলেবেলের অধীনে কিছু কিছু পোস্টপ্রসেসিং করার সুযোগ পায় যা একাধিক returnএস সহ অসম্ভব ।
Ant_222

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

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

39

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

  if (! যুক্তি) // অ-নাল কিনা তা পরীক্ষা করুন
    ERR_NULL_ARGUMENT ফেরত দিন;
  ... নন-নাল যুক্তি প্রক্রিয়া করুন
  যদি (ঠিক আছে)
    প্রত্যাবর্তন 0;
  অন্য
    ERR_NOT_OK প্রত্যাবর্তন করুন;

এর থেকে পরিষ্কার:

  int রিটার্ন_ভ্যালু;
  if (যুক্তি) // নন-নাল
  {
    .. নন নাল যুক্তি প্রক্রিয়া
    .. যথাযথ ফলাফল সেট করুন
  }
  অন্য
    ফলাফল = ERR_NULL_ARGUMENT;
  প্রত্যাবর্তনের ফলাফল;

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


আপনার প্রথম উদাহরণ, okপরিবর্তনশীল পরিচালনা করা , আমার কাছে একক-রিটার্ন পদ্ধতির মতো দেখায়। return ok ? 0 : ERR_NOT_OK;
তদ্ব্যতীত

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

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

4
দৃalled়তম ক্লিয়ারার উদাহরণটি খুব কম স্পষ্ট এবং পড়া খুব কঠিন। একটি প্রস্থান পয়েন্ট সবসময় পড়া সহজ, বজায় রাখা সহজ, ডিবাগ করা সহজ।
গাইড

8
@ গুয়েডোজি: বাদ দেওয়া অংশগুলিতে কী প্রদর্শিত হবে তার উপর নির্ভর করে উভয়ই প্যাটার্নটি আরও পঠনযোগ্য হতে পারে। "রিটার্ন এক্স" ব্যবহার করে; এটি পরিষ্কার করে দেয় যে যদি বিবৃতিটি পৌঁছে যায়, তবে ফেরতের মান x হবে। "ফলাফল = x" ব্যবহার করে; পাতাগুলি সম্ভাবনাটি উন্মুক্ত করে দেয় যে ফলাফলটি ফেরত দেওয়ার আগে অন্য কোনও কিছু পরিবর্তন করতে পারে। এটি কার্যকর হতে পারে যদি এটি বাস্তবে ফলাফল পরিবর্তন করার প্রয়োজনীয় হয়ে ওঠে, তবে প্রোগ্রামটি পরীক্ষা করে প্রোগ্রামারদের কোডটি পরীক্ষা করে দেখতে হবে যে উত্তরটি "এটি করতে পারে না" এমনকি ফলাফল কীভাবে পরিবর্তন হতে পারে তা পরীক্ষা করে দেখতে হবে have
সুপারক্যাট

15

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


এটি সত্যিই
আরআইআই-র

14

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

ডেলিভারেবলস রয়েছে, সর্বাধিক উল্লেখযোগ্য কার্নেলগুলি, যার গতি একাধিক প্রস্থান পয়েন্টগুলি সরবরাহ করে need এই পরিবেশগুলির সাধারণত নিজস্ব স্মৃতি এবং প্রক্রিয়া পরিচালনা থাকে, তাই ফুটো হওয়ার ঝুঁকি হ্রাস পায়।

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

- 2 সেন্ট

আরও তথ্যের জন্য দয়া করে এই ডকটি দেখুন: নীস্টির 5459


9
multiple returns in a function requires a much deeper analysisকেবলমাত্র যদি ফাংশনটি ইতিমধ্যে বিশাল (> 1 স্ক্রিন) বিশাল হয়, অন্যথায় এটি বিশ্লেষণ সহজ করে তোলে
dss539

4
একাধিক রিটার্ন কখনই বিশ্লেষণকে সহজ করে না, কেবলমাত্র
অপোসাইট

4
লিঙ্কটি মারা গেছে (404)।
fusi

4
@ ফুসি - এটি আর্কাইভ.আরজে পাওয়া গেছে এবং লিঙ্কটি এখানে আপডেট করেছে
স্কিচাইডার

4

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

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

দ্বিতীয় কারণটি সূক্ষ্ম এবং কিছু যোগ্যতা রয়েছে, বিশেষত যদি ফাংশনটি একটি বৃহত ডেটা কাঠামো ফেরত দেয়। তবে আমি এ নিয়ে খুব বেশি চিন্তা করব না ...

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

শুভকামনা।


4

আমি একক-প্রস্থান শৈলীর একজন উকিল থাকতাম। আমার যুক্তি বেশিরভাগ সময় ব্যথা থেকে এসেছে ...

একক-প্রস্থানটি ডিবাগ করা সহজ।

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

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

একক-প্রস্থান পদ্ধতিগুলি ডিবাগরে পা রাখা আরও সহজ ছিল এবং যুক্তিটি না ভাঙিয়ে আলাদা করে আনা সহজ।


0

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

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

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


-7

আপনার যদি মনে হয় যে কোনও ফাংশনে আপনার একাধিক প্রস্থান পয়েন্ট প্রয়োজন, ফাংশনটি খুব বড় এবং খুব বেশি করে চলেছে।

আমি রবার্ট সি মার্টিনের বই, ক্লিন কোডের ফাংশনগুলি সম্পর্কে অধ্যায়টি পড়ার পরামর্শ দেব।

মূলত, আপনার 4 লাইন কোড বা তারও কম সংখ্যক ফাংশন লেখার চেষ্টা করা উচিত।

মাইক লং এর ব্লগ থেকে কিছু নোট :

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

30
4 লাইন? আপনি এমন কোডটি কী কী আপনাকে এ জাতীয় সরলতা সক্ষম করে? আমি সত্যিই সন্দেহ করি যে লিনাক্স কার্নেল বা গিট উদাহরণস্বরূপ এটি করে।
shinzou

7
"কোনও ফাংশনে বুলিয়ান পতাকা উত্তোলন করা সত্যই ভয়ঙ্কর definition সংজ্ঞানুসারে? না ... যে বুলিয়ান সম্ভবত আপনার চার লাইনের একটিতে প্রভাব ফেলতে পারে। এছাড়াও আমি ফাংশনটির আকার ছোট রাখার সাথে একমত হওয়ার সাথে সাথে চারটি কিছুটা সীমিত। এটি একটি খুব looseিলে .ালা নির্দেশিকা হিসাবে নেওয়া উচিত।
জেসি

12
এই জাতীয় সীমাবদ্ধতা যুক্তিযুক্তভাবে বিভ্রান্তিকর কোড তৈরি করবে। এটি পদ্ধতিগুলি পরিষ্কার সংক্ষিপ্ত হওয়া এবং অযৌক্তিক পার্শ্ব প্রতিক্রিয়া ছাড়াই কেবল যা করা উচিত তা করা সম্পর্কে আরও দৃ .়।
জেসি

10
এসও-তে বিরল একটি উত্তর যা আমি আশা করি যে আমি একাধিকবার হ্রাস করতে পারি।
স্টিভেন র্যান্ডস

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