কার্যক্রমে কোডের লাইনগুলির একটি সর্বোত্তম সংখ্যা আছে? [বন্ধ]


18

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

এটি আমাকে বিস্মিত করার দিকে পরিচালিত করে: ফাংশনটিতে কি কোনও সর্বোত্তম সংখ্যক এলওসি রয়েছে? যদি তা হয় তবে এটি কী এবং এটি ভাষাগুলির মধ্যে বিচ্যুত হয়?


6
একটি ভাল সময়ের জন্য মিচ ম্যাককনেল অধ্যায় 7 বিভাগ 4 দ্বারা কোড সম্পূর্ণ ভোল 2 দেখুন।
পিটার টার্নার 21

2
@ পিটার - আমি মনে করি আপনার অর্থ "স্টিভ ম্যাককনেল"
জনএফএক্স

হ্যাঁ, মজার বিষয়টি আমি বইটি দেখার সময় লিখেছিলাম .... নষ্ট ম্যাক ম্যাকনেল প্রেস। বুশের চিফ অফ স্টাফ?
পিটার টার্নার

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

1
@ পিটার টার্নার: এইচএম ... এস 15 এর মাধ্যমে এস 1 এবং আই 11 এর মাধ্যমে আই 1। মনে হচ্ছে তিনি নিবন্ধের সাথে অস্থায়ী পরিবর্তনগুলি বিভ্রান্ত করছেন। ^^
গ্যাবলিন

উত্তর:


33

লাইনের সংখ্যার পরিবর্তে, আমি যে মানদণ্ডগুলি ব্যবহার করব তা হ'ল প্রতিটি ফাংশনটিতে কেবল একটি কাজ করা উচিত এবং এটি ভালভাবে করা উচিত।


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

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

2
@ লোরেঞ্জো - যদি এটি হয় তবে প্রতিটি পদক্ষেপই কাজের একক হয়ে যায়। প্যারেন্ট ফাংশন কাজের ইউনিটগুলির একটি উচ্চ স্তরের ওভারভিউ হয়ে ওঠে।
কেওসপ্যান্ডিয়ন

1
হ্যাঁ, এটি সত্যই সত্য। এইচএম, আমাকে আবার প্রশ্নটি পুনরায় জবাব দেওয়া যাক: ফাংশনগুলির জন্য কি একটি সর্বোত্তম সংখ্যক এলওসি রয়েছে যা কেবল একটি কাজ করে এবং এটি ভাল করে?
গ্যাবলিন

@ গ্যাবলিন, বলা মুশকিল এবং এলওসিও ভাষা নির্ভর, তবে আপনি যদি এই নীতিটি মেনে চলেন তবে সাধারণত আপনি যুক্তিসঙ্গত পরিসরে চলে যান, বলুন 1 ~ 50।
গ্রুকাস

21

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

মূল ধারণাটি হ'ল, যদি আপনি একবারে পুরো ফাংশনটি দেখতে না পান তবে ফাংশনটি জটিল over

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


21
গড় মনিটরের আকার / রেজোলিউশন বৃদ্ধির সাথে সাথে এই মেট্রিকটি ক্রমান্বয়ে আরও অকেজো হয়ে যায়।
অ্যাডাম শিখুন

2
আমাদের প্রোগ্রামিং অধ্যাপক অন্য রাতে এই উদাহরণটি বলেছিলেন :)
সিডনিকল

2
@ আন্না: ঠিক আছে, আমার মনিটরের উচ্চমান রয়েছে তবে টুলবার / প্যালেট / প্যানেলের সংখ্যাও বেড়েছে। এবং তারপরে, এখন আমি 14 পিটি পিচ ফন্ট ব্যবহার করতে পারি! :)
উইজার্ড 79

4
টার্মিনালের 24 x 80 সাইজের আকার পরিবর্তন করার প্রবণতা নেই।
বিকল্প

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

15

কেউ নেই.

স্ক্রিনগুলি বড় হচ্ছে, ফন্টের আকার আরও ছোট। লোকের বিভিন্ন আকারের থাম্ব থাকে তখন থাম্বের বিধিগুলি এত ভাল কাজ করে না।

সংক্ষিপ্ত হতে। যদি আপনার ফাংশন একাধিক জিনিস করে তবে এটি এটিকে আরও ছোট করে ফেলা ভাল ধারণা।


অন্তত আপনি কাজ করতে পারে বলতে আমার হয় কেন আপনি কি মনে করেন আমার উত্তর দরকারী নয়।
জোশ কে

7
আমি মনে করি কেউ এইচ 1 ট্যাগ ব্যবহার করে আপনার ক্ষতি করেছে ।
কেওসপ্যান্ডিয়ন

@ চাওস: এটি প্রয়োজনীয় উত্তর।
জোশ কে

6
হয়তো আমি কিছুটা সূক্ষ্ম ছিলাম তবে আমার উদ্দেশ্যটি বোঝানো ছিল যে আপনার উত্তরটি ভোট দেওয়ার কোনও বৈধ কারণ নেই। যে ব্যক্তি আমলটি করেছিল তার কিছু করার এলোমেলো ব্যক্তিগত কারণ ছিল। তারা সহজেই ভাবেন জোশ একটি ভয়াবহ নাম।
কেওসপ্যান্ডিয়ন

6

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

ডিফল্টরূপে, একটি ব্রাউজার খুব বড় নয়। আপনাকে স্ক্রোলিং শুরু করার আগে আপনি 5 বা 6 টি লাইনে ফিট করতে পারেন। স্ক্রোলিং অবশ্যই সামান্য বিরক্তিকর।

সুতরাং স্মলটাল্কে পরিবেশ আপনাকে সংক্ষিপ্ত পদ্ধতি লিখতে "উত্সাহ দেয়", প্রায় দৈর্ঘ্যের প্রায় 6 লাইন। (এটি সাধারণত প্রচুর পরিমাণে; স্মলটাক একটি সুন্দর পরিলক্ষিত ভাষা))


2

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

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

"অন্যথায় আমাদের টন ফাংশন হবে, যার মধ্যে কেবলমাত্র একক লাইন বা দুটি কোড থাকে" "

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


1

উত্তর অবশ্যই 42

গুরুত্বপূর্ণ লক্ষণীয়: কোনও ফানসিওন কখনও এসআরপি লঙ্ঘন করতে পারে না , বা আপনাকে স্প্যানিশ অনুসন্ধানের মুখোমুখি হতে হবে ।

লাইনের পরিমাণ কমিয়ে আনার জন্য কয়েকটি ইঙ্গিত:

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

1
N the স্প্যানিশ ... আহ ব্যাগার আশা করে , আমি এখানে কিছুটা দেরি করেছি।
বাম দিকের বাইরে

0

এখানে কিছু সূত্র রয়েছে:

  • ফাংশনের উদ্দেশ্য এবং ব্যবহার সম্পর্কে মন্তব্য লিখতে আপনার যদি সমস্যা হয় তবে এটি অনেক দীর্ঘ।

  • আপনি যদি ফাংশনে কোডের একটি বিভাগের ক্রিয়াকলাপটি ব্যাখ্যা করে একটি মন্তব্য লেখার জন্য প্রলুব্ধ হন তবে ফাংশনটি খুব দীর্ঘ।

  • আপনি যদি অন্য কোনও ফাংশন থেকে কোডটি আটকান, তবে সেগুলি উভয়ই দীর্ঘ ((পৃথক ফাংশন হিসাবে সেই কোডটি বের করুন)।

  • শ্রেণি ডেটা সদস্যদের স্থানীয় ভেরিয়েবল থেকে আলাদা করার জন্য আপনার যদি কোডিং কনভেনশন দরকার হয় তবে ফাংশনটি অনেক দীর্ঘ এবং শ্রেণিতে অনেক বেশি সদস্য রয়েছে।

  • কোনও ফাংশন পড়ার সময় আপনার যদি নোট নিতে হয় তবে এটি খুব দীর্ঘ।

প্রতিটি 'এক' বা দুটি লাইন দীর্ঘ 'টন' ক্রিয়াকলাপ হওয়া অবশ্যই খারাপ জিনিস নয়। আমি দেখেছি যে এই ছোট ছোট ফাংশনগুলি আমার শুরুতে প্রত্যাশার চেয়ে অনেক বেশি পুনরায় ব্যবহৃত হয়েছিল।

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