প্রসঙ্গ
ইন ক্লিন কোড , পৃষ্ঠা 35, এটা বলে
এটি সূচিত করে যে বিবৃতিগুলির মধ্যে ব্লকগুলি অন্য বিবৃতিগুলি, যখন বিবৃতিগুলি এবং আরও অনেকগুলি এক লাইন দীর্ঘ হওয়া উচিত। সম্ভবত সেই লাইনটি একটি ফাংশন কল হওয়া উচিত। এটি কেবল এনকোলেজিং ফাংশনটিকে ছোট রাখে না, তবে এটি ডকুমেন্টারি মানও যুক্ত করে কারণ ব্লকের মধ্যে ডাকা ফাংশনটির একটি সুন্দর বর্ণনামূলক নাম থাকতে পারে।
আমি সম্পূর্ণরূপে সম্মতি জানাই, এটি অনেক অর্থবোধ করে।
পরে 40 পৃষ্ঠায় এটি ফাংশন আর্গুমেন্ট সম্পর্কে বলে
কোনও ক্রিয়াকলাপের জন্য আর্গুমেন্টের আদর্শ সংখ্যা শূন্য (নীলাদিক)। এরপরে আসে এক (একাকী), তার পরে দু'জনে (ডায়াডিক) closely তিনটি যুক্তি (ট্রায়ডিক) যেখানে সম্ভব সেখানে এড়ানো উচিত। তিনটিরও বেশি (পলিয়েডিক) খুব বিশেষ ন্যায্যতা প্রয়োজন — এবং তারপরে যাইহোক এটি ব্যবহার করা উচিত নয়। যুক্তিগুলি শক্ত। তারা ধারণামূলক শক্তি অনেক গ্রহণ।
আমি সম্পূর্ণরূপে সম্মতি জানাই, এটি অনেক অর্থবোধ করে।
সমস্যা
যাইহোক, বরং প্রায়শই আমি নিজেকে অন্য তালিকা থেকে একটি তালিকা তৈরি করতে দেখি এবং আমাকে দুটি খারাপের মধ্যে একটিতে বাঁচতে হবে।
হয় আমি ব্লকে দুটি লাইন ব্যবহার করি , একটি জিনিস তৈরির জন্য, একটিতে এটির ফলাফল যুক্ত করার জন্য:
public List<Flurp> CreateFlurps(List<BadaBoom> badaBooms)
{
List<Flurp> flurps = new List<Flurp>();
foreach (BadaBoom badaBoom in badaBooms)
{
Flurp flurp = CreateFlurp(badaBoom);
flurps.Add(flurp);
}
return flurps;
}
অথবা আমি তালিকার জন্য ফাংশনে যুক্তি যুক্ত করব যেখানে জিনিসটি যুক্ত হবে, এটি "একটি যুক্তি আরও খারাপ" করে তুলেছে।
public List<Flurp> CreateFlurps(List<BadaBoom> badaBooms)
{
List<Flurp> flurps = new List<Flurp>();
foreach (BadaBoom badaBoom in badaBooms)
{
CreateFlurpInList(badaBoom, flurps);
}
return flurps;
}
প্রশ্ন
আমি কি দেখতে পাচ্ছি না এমন (সুবিধাগুলি) সুবিধাগুলি রয়েছে, যা তাদের মধ্যে একটিকে সাধারণভাবে পছন্দনীয় করে তোলে? বা নির্দিষ্ট পরিস্থিতিতে যেমন সুবিধা আছে; সেক্ষেত্রে সিদ্ধান্ত নেওয়ার সময় আমার কী সন্ধান করা উচিত?
f(g(x))
আপনার স্টাইল-গাইডের বিরুদ্ধে হয় তবে ভাল, আমি আপনার স্টাইল-গাইডটি ঠিক করতে পারি না। মানে আপনি sqrt(x*x + y*y)
চারটি লাইনে বিভক্ত হন না , তাই না? এবং এটি তিনটি (!) অভ্যন্তরীণ নেস্টিং স্তরের (হাঁফ!) নেস্টেড সুবে এক্সপ্রেশনগুলি। আপনার লক্ষ্যটি পঠনযোগ্যতা হওয়া উচিত , একক অপারেটরের বিবৃতি নয়। আপনি যদি পরে চান তবে ভাল, আমার কাছে আপনার জন্য নিখুঁত ভাষা রয়েছে: এসেমব্লার।
mov
নির্দেশাবলী এবং jmp toStart
শেষে একক ব্যবহার করে একটি টুরিং-সম্পূর্ণ কম্পিউটার তৈরি করতে পারেন । কেউ আসলে একটি সংকলক তৈরি করেছিলেন যা হুবহু এটি করে: ডি
rlwimi
নির্দেশের বিষয়ে কথা বলবেন না । (এর অর্থ দাঁড়ান রোটেট বাম ওয়ার্ড ইমিডিয়েট মাস্ক ইনসার্ট।) এই কমান্ডটি পাঁচটি অপারেন্ড (দুটি নিবন্ধক এবং তিনটি তাত্ক্ষণিক মান) এর চেয়ে কম নেয় নি এবং এটি নিম্নলিখিত ক্রিয়াকলাপ সম্পাদন করেছে: একটি নিবন্ধের বিষয়বস্তু তাত্ক্ষণিক শিফট দ্বারা আবর্তিত হয়েছিল, একটি মাস্ক ছিল 1 টি বিটগুলির একক রান দিয়ে তৈরি হয়েছিল যা অন্য দুটি তাত্ক্ষণিক ক্রিয়াকলাপ দ্বারা নিয়ন্ত্রিত ছিল এবং অন্যান্য রেজিস্টার অপারেণ্ডের সেই মুখোশটিতে 1 বিটের সাথে সংযুক্ত বিটগুলি ঘোরানো নিবন্ধের সংশ্লিষ্ট বিটগুলির সাথে প্রতিস্থাপন করা হয়েছিল। খুব দুর্দান্ত নির্দেশনা :-)
flurps.Add(CreateFlurp(badaBoom));
?