प्रसंग
में स्वच्छ कोड , पृष्ठ 35, यह कहता है
इसका तात्पर्य यह है कि यदि कथन, और कथनों, जबकि कथनों, और इसी तरह के ब्लॉक एक पंक्ति में लंबे होने चाहिए। संभवतः वह रेखा एक फ़ंक्शन कॉल होनी चाहिए। यह न केवल संलग्न फ़ंक्शन को छोटा रखता है, बल्कि यह दस्तावेजी मूल्य भी जोड़ता है क्योंकि ब्लॉक के भीतर कहे जाने वाले फ़ंक्शन का एक अच्छा वर्णनात्मक नाम हो सकता है।
मैं पूरी तरह से सहमत हूं, यह बहुत मायने रखता है।
बाद में, पृष्ठ 40 पर, यह फ़ंक्शन तर्कों के बारे में कहता है
किसी फ़ंक्शन के लिए तर्कों की आदर्श संख्या शून्य (niladic) है। इसके बाद एक (मोनैडिक) आता है, उसके बाद दो (डाइएडिक) निकट से आता है। जहां संभव हो, तीन तर्क (त्रय) से बचना चाहिए। तीन से अधिक (पॉलीएडिक) के लिए बहुत विशेष औचित्य की आवश्यकता होती है- और फिर इसका उपयोग किसी भी तरह से नहीं किया जाना चाहिए। तर्क कठिन हैं। वे काफी वैचारिक शक्ति लेते हैं।
मैं पूरी तरह से सहमत हूं, यह बहुत मायने रखता है।
मुद्दा
हालाँकि, अक्सर मैं खुद को दूसरी सूची से एक सूची बनाता हुआ पाता हूं और मुझे दो बुराइयों में से एक के साथ रहना होगा।
या तो मैं ब्लॉक में दो पंक्तियों का उपयोग करता हूं , एक चीज बनाने के लिए, एक इसे परिणाम में जोड़ने के लिए:
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
अंत में एकल का उपयोग करके ट्यूरिंग-पूर्ण कंप्यूटर बना सकते हैं । किसी ने वास्तव में एक कंपाइलर बनाया जो बिल्कुल ऐसा करता है: D
rlwimi
पीपीसी पर कुख्यात निर्देश की बात करने के लिए नहीं । (जो रोटेट लेफ्ट वर्ड इमीडिएट मास्क इंसर्ट के लिए खड़ा है।) इस कमांड ने पांच ऑपरेंड्स (दो रजिस्टर, और तीन तत्काल मान) से कम नहीं लिया, और इसने निम्नलिखित ऑपरेशन किए: एक रजिस्टर सामग्री को तत्काल शिफ्ट द्वारा घुमाया गया, एक मुखौटा 1 बिट्स के एक रन के साथ बनाया गया था, जिसे दो अन्य तत्काल ऑपरेंड्स द्वारा नियंत्रित किया गया था, और दूसरे रजिस्टर ऑपरेंड में उस मास्क में 1 बिट्स के अनुरूप बिट्स को घुमाए गए रजिस्टर के संबंधित बिट्स के साथ बदल दिया गया था। बहुत अच्छा निर्देश :-)
flurps.Add(CreateFlurp(badaBoom));
?