सारांश
जैसा कि जैक्सबी लिखते हैं, हर कोई रॉबर्ट सी। मार्टिन के "क्लीन कोड" से सहमत नहीं है।
खुले स्रोत की परियोजनाएं जो आपको मिली "उन सिद्धांतों का उल्लंघन करती हैं" जिनसे आपको उम्मीद थी कि आपके पास बस अन्य सिद्धांत होने की संभावना है।
हमारे दृष्टिकोण
मैं कई कोड आधारों की देखरेख करता हूं जो रॉबर्ट सी। मार्टिन के सिद्धांतों का बहुत पालन करते हैं। हालांकि, मैं वास्तव में दावा नहीं करता कि वे सही हैं , मैं केवल यह कह सकता हूं कि वे हमारे लिए अच्छा काम करते हैं - और यह "हमें" वास्तव में कम से कम का एक संयोजन है
- हमारे उत्पादों की गुंजाइश और वास्तुकला,
- लक्ष्य बाजार / ग्राहकों की अपेक्षाएं,
- कब तक उत्पादों को बनाए रखा जाता है,
- हमारे द्वारा उपयोग की जाने वाली विकास पद्धति,
- हमारी कंपनी की संगठनात्मक संरचना और
- हमारे डेवलपर्स की आदतें, राय और पिछले अनुभव।
मूल रूप से, यह उबलता है: प्रत्येक टीम (यह एक कंपनी, एक विभाग या एक खुला स्रोत परियोजना है) अद्वितीय है। उनकी अलग प्राथमिकताएं और अलग दृष्टिकोण होंगे, और निश्चित रूप से वे अलग-अलग ट्रेडऑफ करेंगे। ये ट्रेडऑफ़, और कोड शैली जिसके परिणामस्वरूप वे बड़े पैमाने पर स्वाद का मामला हैं और "गलत" या "सही" साबित नहीं किया जा सकता है। टीमें केवल यह कह सकती हैं "हम ऐसा करते हैं क्योंकि यह हमारे लिए काम करता है" या "हमें इसे बदलना चाहिए क्योंकि यह हमारे लिए काम नहीं करता है"।
उस ने कहा, मेरा मानना है कि वर्षों में बड़े कोडबेस को सफलतापूर्वक बनाए रखने में सक्षम होने के लिए, प्रत्येक टीम को कोड सम्मेलनों के एक सेट पर सहमत होना चाहिए जो उन्हें लगता है कि ऊपर दिए गए पहलुओं के लिए उपयुक्त हैं। इसका मतलब रॉबर्ट सी। मार्टिन द्वारा किसी अन्य लेखक द्वारा प्रथाओं को अपनाना, या खुद का आविष्कार करना हो सकता है; इसका मतलब यह हो सकता है कि उन्हें औपचारिक रूप से लिखना या उन्हें "उदाहरण के लिए" दस्तावेज़ करना। लेकिन उनका अस्तित्व होना चाहिए।
उदाहरण
"एक लंबी विधि से कई निजी विधियों में कोड विभाजन" के अभ्यास पर विचार करें।
रॉबर्ट सी मार्टिन का कहना है कि इस शैली अमूर्त में से एक स्तर के लिए प्रत्येक विधि की सामग्री को सीमित करने के लिए अनुमति देता है - एक सरल उदाहरण के रूप में, एक सार्वजनिक विधि शायद ही तरह निजी तरीकों के लिए कॉल शामिल होंगे verifyInput(...)
, loadDataFromHardDisk(...)
, transformDataToJson(...)
और अंत में sendJsonToClient(...)
, और इन तरीकों के लिए होता है कार्यान्वयन विवरण।
- कुछ लोग इसे पसंद करते हैं क्योंकि पाठकों को उच्च-स्तरीय चरणों का त्वरित अवलोकन मिल सकता है और वे चुन सकते हैं कि वे किस विवरण के बारे में पढ़ना चाहते हैं।
- कुछ लोग इसे नापसंद करते हैं क्योंकि जब आप सभी विवरणों को जानना चाहते हैं, तो आपको निष्पादन प्रवाह के साथ पालन करने के लिए कक्षा में चारों ओर कूदना होगा (यह वही है जो जैक्सबी संभावना को संदर्भित करता है जब वह जटिलता जोड़ने के बारे में लिखता है)।
सबक है: वे सभी सही हैं, क्योंकि वे एक राय होने के हकदार हैं।