चाचा बॉब का सुझाव है कि यदि आप इसे से बच सकते हैं तो कोडिंग मानकों को नीचे नहीं लिखा जाना चाहिए?


145

जब मैं इस सवाल को पढ़ रहा था , शीर्ष वोटिंग जवाब ने अंकल बॉब को कोडिंग मानकों पर उद्धृत किया , लेकिन मैं इस टिप से भ्रमित था:

  1. यदि आप इससे बच सकते हैं तो उन्हें न लिखें। बल्कि, कोड को मानकों पर कब्जा करने का तरीका बताएं।

यह मेरे दिमाग में उछल गया, लेकिन मुझे छड़ी करने के लिए जगह नहीं मिली। यदि कोई नया व्यक्ति टीम में शामिल होता है, या मानकों को बदलता है, तो क्या सूचना का भ्रम नहीं हो सकता है?

मुझे एक कोडिंग मानक क्यों नहीं लिखना चाहिए?


47
हम्म। मैं कल्पना करने की कोशिश कर रहा हूं कि यह सैकड़ों डेवलपर्स के साथ एक बड़ी बहुराष्ट्रीय कंपनी में कैसे काम करेगा और दशकों में एक कोड आधार होगा।
मैथ्यू जेम्स ब्रिग्स

31
@MatthewJamesBriggs: यह कम से कम उतना ही अच्छा काम करता है जितना कि एक लिखित-डाउन मानक, अधिकांश देवता अनदेखा करते हैं, या जिस समय कोड शुरू में लिखा गया था उस समय एक अलग सामग्री थी।
डॉक ब्राउन

7
@MatthewJamesBriggs: सहमत। शैली गाइड में पिछले सम्मेलनों को पहचानने के लिए पर्याप्त जानकारी होनी चाहिए जो अब पदावनत हो गई हैं, अन्यथा "मौजूदा शैली की प्रतिलिपि बनाएँ" को पुनर्जीवित करने के लिए कुछ 10-वर्षीय डरावनी मिल जाएगी। इसके अलावा, जब आधिकारिक रूप से अलग-अलग और असंगत नमूनों का उपयोग करने वाले अकस्मात रूप से क्लिपर आधिकारिक शैली का उपयोग करते हैं, तो लिखित शैली मार्गदर्शिका कहती है कि उनमें से कौन सा सही है (या आदर्श रूप से, पहली जगह में क्लिक बनाने से रोकता है)। और अगर आपके कुछ सैकड़ों देवता डॉक्स नहीं पढ़ते हैं, तो एक बड़ी कंपनी में आप उन्हें केवल सकल मपेट्री के लिए आग लगा सकते हैं।
स्टीव जेसोप

14
हालांकि निष्पक्ष होने के लिए, बॉब ने यह भी कहा कि आपके पास पहले से लिखित या अलिखित एक कंपनी-व्यापी कोडिंग मानक नहीं होना चाहिए। बल्कि, प्रत्येक टीम / समूह को अपना विकास करना चाहिए।
स्टीव जेसोप

37
एक दस्तावेज़ लिखने के बजाय जो कोई नहीं पढ़ेगा, एक लिंटर का उपयोग करें जो कोड को एक निश्चित तरीके से लागू करता है। यदि यह आपकी विकास प्रक्रिया का हिस्सा है, तो यह अपरिहार्य है।
सियारिया

जवाबों:


256

कुछ कारण हैं।

  1. डॉक्यूमेंटेशन कोई नहीं पढ़ता।
  2. कोई भी दस्तावेज का पालन नहीं करता है भले ही वे इसे पढ़ते हैं।
  3. कोई भी दस्तावेज़ को अपडेट नहीं करता है भले ही वे इसे पढ़ते हैं और इसका पालन करते हैं।
  4. संस्कृति बनाने की तुलना में प्रथाओं की एक सूची लिखना बहुत कम प्रभावी है।

कोडिंग मानकों के बारे में नहीं है कि लोगों को क्या करना चाहिए , लेकिन इस बारे में है कि वे वास्तव में क्या करते हैं। जब लोग मानकों से विचलित हो जाते हैं, तो इसे एक कोड समीक्षा प्रक्रिया और / या स्वचालित टूल के माध्यम से उठाया और बदला जाना चाहिए।

याद रखें, कोडिंग मानकों का पूरा बिंदु हमारे जीवन को आसान बनाना है। वे हमारे मस्तिष्क के लिए एक शॉर्टकट हैं ताकि हम महत्वपूर्ण सामान से आवश्यक सामग्री को फ़िल्टर कर सकें। किसी दस्तावेज़ में इसे औपचारिक रूप से लागू करने की तुलना में इसे लागू करने के लिए समीक्षा की संस्कृति बनाना बेहतर है।


11
और अगर आप चीजों को लागू करना चाहते हैं, तो आपके पास एक निर्माण प्रक्रिया का चरण होना चाहिए जो इसे लागू करता है, न कि एक स्टाइल गाइड जो करता है।
वेन वर्नर

31
क्या आपके पास वास्तव में एक मानक दस्तावेज नहीं है, लेकिन हर कोड की समीक्षा में पहले कुछ हफ्तों के लिए लोगों पर चिल्लाना है? ऐसा लगता है कि आप मूल रूप से शुरुआती को अपने कोडिंग स्टाइल गाइड को उलटने की उम्मीद करेंगे। या यह अधिक काल्पनिक है "मुझे लगता है कि उसका क्या मतलब है"? अब अगर यह उन नियमों को लागू करने वाले स्वचालित उपकरणों के बारे में है - सहमत हैं, तो यह आवश्यक है। लेकिन मैं नहीं चाहता कि मुझे नियमों का पालन करना पड़े।
Voo

13
@ क्यों, अगर आपको कोई समस्या आती है तो आपको कोड समीक्षा के दौरान चिल्लाने की आवश्यकता क्यों है?
जाप

20
@ जाप मुझे लगा कि हाइपरबोले स्पष्ट था .. स्पष्ट रूप से नहीं। लोगों पर चिल्लाना नहीं, बल्कि उन्हें बताना कि उन्हें वापस जाना है और उन सभी चीजों को ठीक करना है जो उन्होंने उल्लंघन किया था क्योंकि वे बेहतर नहीं जान सकते थे।
Voo

5
@Voo: आपको "रिवर्स इंजीनियर कोडिंग स्टाइल गाइड" की आवश्यकता नहीं है। मौजूदा कोड को देखते हुए सम्मेलनों को स्पष्ट होना चाहिए । सब कुछ जो तुरंत आंख में नहीं कूदता है, या तो असामान्य है या तय नहीं है। यदि वास्तव में कुछ घटित होने के बारे में वास्तव में महत्वपूर्ण नियम हैं, तो नए डेवलपर्स के साथ इस पर चर्चा करने के लायक हो सकता है, जब वे ऐसे होते हैं जिन्हें इस तरह का कोड लिखना होता है। संचार को कम करके आंका नहीं जा सकता।
होल्गर

112

एक और व्याख्या है। मुझे विश्वास नहीं है कि यह अंकल बॉब का क्या मतलब है, लेकिन यह विचार करने योग्य है।

किसी दस्तावेज़ में कोडिंग मानकों को कैप्चर न करें। मानकों को पूरा करने वाली एक स्वचालित प्रक्रिया होने के द्वारा , इसे कोड में कैप्चर करें ।

किसी दस्तावेज़ को संदर्भित करने वाले लोगों पर भरोसा न करें, लेकिन साथ ही, उस कोड की व्याख्या करने वाले लोगों पर भरोसा न करें जो पहले से मौजूद हैं और यह पहचानना है कि क्या सम्मेलन है और क्या संयोग है।

अपनी कमिट बिल्ड में चेकस्टाइल जैसी किसी चीज़ को शामिल करें। यह प्रारूपण और नामकरण मानकों जैसे बुनियादी नियमों को लागू कर सकता है, और फिर शैली पर विचार करने में मानसिक प्रयास को बढ़ाने के बजाय, सभी को एक गूंगा प्रक्रिया में उतार दिया जा सकता है जो कम से कम पूरी तरह से होने की गारंटी है।

यदि यह मायने रखता है, तो सख्ती से परिभाषित करें कि आप क्या चाहते हैं, और यदि यह गलत है तो असफल हो जाएं।


6
दरअसल, मुझे संदेह है कि इस सुझाव के लिए अंकल बॉब के तर्क का कम से कम कुछ हिस्सा था। कोडिंग मानकों का स्वचालन गुणवत्ता में सुधार के एक उपयोगी तरीके के रूप में स्वचालित परीक्षण के साथ जाता है, और मुझे यकीन है कि बॉब को पता है कि ...
जूल्स

10
यह नियम # 6 का उल्लेख करने के लायक हो सकता है: After the first few iterations, get the team together to decide.सिर्फ नियम # 3 के साथ ऐसा लगता है कि वह बिना किसी कोडिंग मानक की वकालत कर रहा है, लेकिन जब सभी नियमों को एक साथ मानते हुए, और सभी # 6 में से अधिकांश, ऐसा लगता है जैसे वह वास्तव में कह रहा है: "नहीं। पहले एक कोडिंग मानक को लागू करें। इसे व्यवस्थित रूप से विकसित करने दें, और थोड़ी देर बाद अपनी टीम के साथ बैठकर विवरणों को तैयार करें। " जो "अपने कोडिंग मानक को औपचारिक रूप न दें" (जो बहुत सारे उत्तरों का सार प्रतीत होता है) से बहुत अलग है।
शाज़

यदि आप उन वस्तुओं को पढ़ते हैं जो मुझे लगता है कि आप पाएंगे कि यह निश्चित रूप से वह नहीं है, उदाहरण के लिए, यह अकेले आपको कुछ बताना चाहिए: 2. उन्हें कंपनी विशिष्ट के बजाय टीम विशिष्ट होने दें।
बिल के

ध्यान दें कि मैं इस प्रश्न का उत्तर दे रहा हूं "मुझे एक कोडिंग मानक क्यों नहीं लिखना चाहिए" - "अंकल बॉब का क्या मतलब था" नहीं। यह सवाल के शीर्षक के लिए काउंटर चला सकता है, लेकिन इसकी भावना नहीं।
टॉम जॉनसन

ध्यान दें कि एक स्वचालित कोडिंग प्रारूप प्रणाली जो एक भागने खंड प्रदान नहीं करती है (जहां मैं इसे कोड के एक खंड के लिए बंद कर सकता हूं) लगभग निश्चित रूप से कुछ बिंदु पर मैलवेयर होने वाला है।
यकायक

66

लोग कोडिंग मानकों के दस्तावेज़ के वास्तविक उद्देश्य को अनदेखा करते हैं, जो विवादों को निपटाने के लिए है

कोडिंग मानक के अधिकांश निर्णयों का केवल पठनीयता और उत्पादकता पर बहुत मामूली प्रभाव पड़ेगा। खासकर यदि आप भाषा के लिए 'सामान्य' शैली अपनाते हैं, और भाषा डिजाइनर यह महसूस करना शुरू कर रहे हैं कि यह कल्पना का हिस्सा होना चाहिए (जैसे कि गो)।

क्योंकि वे बहुत तुच्छ हैं, तर्कों को वास्तव में गर्म किया जा सकता है और अंतहीन रूप से चलाया जा सकता है, जो उत्पादकता और टीम के सामंजस्य को वास्तविक नुकसान पहुंचाता है। या दो या अधिक लोगों की पसंदीदा शैलियों के बीच अंतहीन सुधार के साथ अपने परिवर्तन के इतिहास को अस्पष्ट कर सकते हैं।

लिखित मानक होने से तर्क समाप्त हो जाता है। प्रबंधक इसे इंगित कर सकते हैं और दस्तावेज़ के प्रति असंतोष को रोक सकते हैं। आप कागज के एक टुकड़े के साथ बहस कर सकते हैं लेकिन यह आपकी बात सुनने वाला नहीं है।

( संरचनाविहीनता के अत्याचार को भी देखें )


19
यह विरासत कोड से निपटने वाली टीमों के लिए अविश्वसनीय रूप से महत्वपूर्ण है। खासकर जब मानकों के एक सेट के बाद कोड से जा रहे हों (या किसी भी मानक का पालन नहीं कर रहे हों)। संदर्भित करने के लिए एक दिशानिर्देश के बिना, यह बताना असंभव है कि कोडबेस में पहले से मौजूद कई शैलियों में कौन सी कोड शैली का पालन करना है। मुझे लगता है कि मानकों को न लिखने की सलाह ग्रीनफील्ड परियोजनाओं पर काम करने वाली बहुत छोटी टीमों के लिए है, जो जोखिम के बिना काम करती हैं - एक बहुत ही दुर्लभ मामला, मेरे अनुभव में।
थॉमस

4
मानक की वास्तविक सामग्री की तुलना में मानक से सहमत होना बहुत महत्वपूर्ण है। यदि आप इसके साथ लंबे समय तक काम करते हैं, तो आप किसी भी शैली के बारे में जान सकते हैं।
मार्क रैनसम

3
तुच्छताओं के बारे में तर्क करना अक्षमता का प्रतीक है, IMHO। कंक्रीट विवाद का निपटारा अंतर्निहित समस्या को ठीक नहीं करेगा।
जोर्जेन फोग

1
हां, विवाद के समाधान और परिवर्तन के इतिहास को अनियंत्रित बनाए रखना दोनों ही बहुत बड़ी बात है, खासकर तब जब आपकी टीम में ओसीडी और नॉट-ओसीडी डेवलपर्स का मिश्रण हो। हालाँकि, मैंने लिखा है मानकों को स्टाइलकॉप जैसे स्वचालित उपकरणों की तुलना में बहुत कम प्रभावी मध्यस्थ माना जाता है, जो इसे व्यक्तिगत या बर्बाद करने वाले प्रबंधकों के समय के बिना कानून को गिराते हैं।
एरिक हिर्स्ट

12
"तुच्छताओं के बारे में तर्क देना अक्षमता का संकेत है" - काश यह सॉफ्टवेयर इंजीनियरिंग में सच होता ... मैं कुछ बहुत, बहुत सक्षम (कम से कम तकनीकी रूप से) देवों से डरता हूं, बिल्कुल लोग तुच्छताओं के बारे में बहस करने के शौकीन हैं। नर्क, यह उनका राष्ट्रीय खेल है। "अनंत ने दलालों की दलीलें दी हैं"
उर्सुला

21

क्योंकि टिप्पणियां झूठ हैं

कोडिंग मानक क्या कोड होना चाहिए पर एक बड़ी टिप्पणी है। कोड ही सत्य का अंतिम स्रोत है। इस मामले में सच्चाई कोड व्यवहार नहीं है, यह वह शैली है जिसे इसमें व्यक्त किया गया है। यदि आपके मानक आपके कोड में पहले से ही प्रतिबिंबित नहीं हैं, तो आपके पास बहुत काम है।

अंकल बॉब एक ​​टिप्पणी को प्रोग्रामर की व्यक्तिगत विफलता के रूप में देखते हैं, क्योंकि यह साबित करता है कि उन्होंने प्रोग्रामिंग भाषा के साथ कोड के टुकड़े के उद्देश्य को व्यक्त करने का प्रबंधन नहीं किया था। इसी तरह, एक मानक दस्तावेज कोड बेस में एक सुसंगत शैली को व्यक्त करने में विफलता है।

नए प्रोग्रामर को कोड को देखने में समय बिताना चाहिए, न कि मल्टी-चैप्टर मानकों के दस्तावेज़ को पढ़ने में दिन बिताना चाहिए (मुझे यह करना होगा, आह)।

एक मानक दस्तावेज ऐसा बुरा विचार नहीं है, लेकिन मैं प्रोग्रामिंग की दुकानों में रहा हूं, जहां मानकों के दस्तावेजों को बनाए रखना किसी की पूर्णकालिक नौकरी थी। कृपया, यदि आपको एक मानक दस्तावेज़ रखना चाहिए, तो उसे एक पृष्ठ पर रखें। लेकिन अगर आपके पास पहले से ही कोड है, तो क्या किसी को एक ही दस्तावेज को एक दिन से कम समय में एक साथ रखने में सक्षम नहीं होना चाहिए?

कोड मानकों का होना महत्वपूर्ण है। एक दस्तावेज होने से यह तय होता है कि वे क्या नहीं हैं।


22
मैंने वास्तव में "नो कमेंट्स" पॉलिसी के साथ बहु-दशक पुराने कोडबेस का अनुभव किया है; हालांकि यह बहुत लंबे वर्णनात्मक तरीके के नामों को प्रोत्साहित करता है, यह इरादे पर कब्जा करने के लिए बिल्कुल भयानक है, चीजों को नहीं करने का कारण है , और हम केवल मूल लेखकों में से एक के साथ हमारे पास होने से इसे दूर करते हैं।
pjc50

7
+1 "कोड मानकों का होना महत्वपूर्ण है। एक दस्तावेज होना जो यह निर्धारित करता है कि वे क्या नहीं हैं।" अच्छी तरह से और सफलतापूर्वक डाल दिया।
डेविड

4
@ pjc50 मैंने कभी नहीं सुना अंकल बॉब ने नो कमेंट पॉलिसी को प्रोत्साहित किया है। वह यह नहीं सिखाता है कि आपको कभी टिप्पणी नहीं करनी चाहिए। वह सिखाता है कि आपको बुरा महसूस होना चाहिए जब आप पाते हैं कि आपको इसे समझना होगा। अपठित अपठनीय <टिप्पणी अपठनीय <पठनीय कोड है कि टिप्पणियों की आवश्यकता नहीं है। ध्यान दें कि आप जिन टिप्पणियों का उल्लेख करते हैं, वे कोड के काम करने के लिए पूरी तरह से डिकोड किए गए हैं। मानक दस्तावेज़ एक ब्रेन डेड चेक सूची में बदल सकते हैं जो कोड समीक्षा में बंद हो जाता है। क्या महत्वपूर्ण नहीं है कि आप अपने सभी टिक प्राप्त करें। यह है कि टेबल पर मौजूद लोग आपके कोड को समझते हैं।
कैंडिड_ओरेंज

3
"नए प्रोग्रामर को कोड को देखने में समय बिताना चाहिए, न कि मल्टी-चैप्टर मानकों के दस्तावेज़ को पढ़ने में दिन बिताना चाहिए"। पता नहीं आप किस कोडिंग गाइड का पालन करते हैं, लेकिन Google का C ++ स्टाइल गाइड आसानी से एक घंटे के अंदर पढ़ा जा सकता है और मौजूदा कोड के आधार पर पसंदीदा स्टाइल को रिवर्स इंजीनियर करने की तुलना में यह पता लगाना बहुत आसान है (जो मुझे सादा भयानक लगता है)। वही हर दूसरे स्टाइल गाइड के लिए सच है जो मैंने कभी पढ़ा है।
Voo

5
@ कॉन्डिडऑरेन्ज: अक्सर, सबसे उपयोगी टिप्पणियां वे होती हैं जो कारण का वर्णन करती हैं कि कुछ चीजें नहीं हुई थीं [क्योंकि ऐसी टिप्पणियों की अनुपस्थिति में, भविष्य के प्रोग्रामर समय को लागू करने की कोशिश में समय बर्बाद कर सकते हैं और बाद में प्रतीत होता है कि "सुधार" को वापस लेने की कोशिश करते हैं बाहर जाने योग्य]। जब तक कोई चर नामों के साथ वास्तव में पागल नहीं हो जाता है, तब तक कोई रास्ता नहीं है यहां तक ​​कि सबसे शानदार ढंग से पठनीय कोड उस जानकारी को कैप्चर कर सकता है।
सुपरकैट

16

चाचा बॉब का सुझाव है कि यदि आप इसे से बच सकते हैं तो कोडिंग मानकों को नीचे नहीं लिखा जाना चाहिए?

यदि आप उसकी राय के पीछे कारण पूछ रहे हैं, तो आपके पास केवल एक उत्तर हो सकता है यदि वह यहां एक उत्तर पोस्ट करेगा ( हमारी राय सिर्फ अप्रासंगिक है), हालांकि ...

मुझे एक कोडिंग मानक क्यों नहीं लिखना चाहिए?

यदि आप पूछ रहे हैं कि क्या वह इसके बारे में सही है: मुझे यह कहने के लिए केवल अलोकप्रिय एक (अभी तक) होने दें कि आपके पास इससे बचने का कोई कारण नहीं है।

राइट डाउनलोड करें । हालाँकि मैं अपने कारणों को समझाने की कोशिश करूँगा ...

डेविड ने एक टिप्पणी में सुझाव दिया कि स्टीफन के जवाब का मुख्य बिंदु यह नहीं है कि आपको दस्तावेज़ क्यों नहीं लिखना चाहिए लेकिन वे किस रूप में हैं। यदि दिशानिर्देशों को औजारों में औपचारिक रूप दिया जाता है (न कि केवल मैनुअल कोड समीक्षा) तो मैं सहमत हो सकता हूं (जब कानून को कुछ और की आवश्यकता नहीं होती है)। कृपया ध्यान दें कि दुर्भाग्य से उपकरण सब कुछ नहीं देख सकते हैं (गणना का सिद्धांत हमारा मित्र नहीं है) अक्सर क्योंकि वे एक विशिष्ट अनुवाद इकाई या पैकेज या आपकी पसंदीदा भाषा को सीमा कहते हैं ।

हालाँकि, अंकल बॉब के शब्दों से मुझे नहीं लगता कि वह उस बारे में बात कर रहे हैं।

क्या मैं ऐसे वरिष्ठ विशेषज्ञ से असहमत हो सकता हूं? मैं उद्धृत पोस्ट में लगभग हर बिंदु के लिए करता हूं (विवरण के लिए इस उत्तर का दूसरा भाग भी देखें)। आइए समझने की कोशिश करें कि क्यों (आप पहले से ही जानते हैं कि कोडिंग दिशानिर्देश केवल मामूली प्रारूपण मुद्दों के बारे में नहीं हैं )।

  • कुछ परिस्थितियों में कानून द्वारा लिखित कोडिंग मानकों की आवश्यकता होती है।
  • मैं दस्तावेज़ीकरण पढ़ता हूं और मुझे यकीन है कि मैं अकेला नहीं हूं। टीम के सदस्य समय के साथ बदल सकते हैं, ज्ञान 5-10 वर्ष पुराने कोडबेस या टीम के सदस्यों के दिमाग में नहीं हो सकता है। संगठनों को उन लोगों को आग लगाना चाहिए जो आंतरिक दिशानिर्देशों का पालन नहीं करते हैं।
  • कोडिंग मानक, एक बार स्वीकृत हो जाने के बाद , अक्सर बदलते नहीं होंगे और यदि वे करते हैं तो आप इसके बारे में जानना चाहते हैं। यदि मानक बदल गए हैं तो आपका प्रलेखन (कोड में) पुराना है क्योंकि आपका सभी कोड नए मानक का पालन नहीं करता है। रिफॉर्मेटिंग / रिफैक्टरिंग धीमा हो सकता है लेकिन आपके पास हमेशा एक लिखित आधिकारिक दिशानिर्देश का पालन करना चाहिए।
  • 5 पेज के दस्तावेज़ को पढ़ने से बेहतर है कि आप किसी नियम को लागू करने के लिए 10 / 20K LOC का निरीक्षण करें (जिसे आप गलत तरीके से समझ सकते हैं, BTW), इसके बारे में कोई संदेह नहीं है।
  • यह विडंबना है कि कोई व्यक्ति जिसने डिजाइन सिद्धांतों और कोडिंग शैली के बारे में कई किताबें लिखी हैं, यह सुझाव दे रहा है कि आपको अपने स्वयं के दिशानिर्देश नहीं लिखना चाहिए, तब बेहतर नहीं है यदि वह हमें कुछ कोड उदाहरणों के साथ डंप करता है? नहीं, क्योंकि लिखित दिशानिर्देश न केवल आपको बताते हैं कि क्या करना है, बल्कि दो अन्य चीजें भी हैं जिनमें कोड की कमी है: क्या नहीं करना है और इसे करने के लिए कारण या नहीं।

"नि: शुल्क आत्म-आयोजन प्रोग्रामिंग" एक निंजा 16 वर्षीय व्यक्ति के लिए अच्छा है, लेकिन संगठनों के पास अन्य आवश्यकताएं हैं :

  • कंपनी के स्तर पर कोड की गुणवत्ता (और परिभाषित) दी जानी चाहिए - यह ऐसा कुछ नहीं है जिसके बारे में कोई एकल टीम तय कर सकती है। उनके पास यह तय करने का कौशल भी नहीं हो सकता है कि बेहतर क्या है (उदाहरण के लिए कितने डेवलपर्स, MISRA की समीक्षा करने के लिए सभी आवश्यक कौशल हैं या यहां तक ​​कि केवल प्रत्येक नियम को समझते हैं?)
  • सदस्यों को अलग-अलग टीमों में ले जाया जा सकता है: यदि सभी समान कोडिंग मानकों का पालन करते हैं तो एकीकरण चिकनी और कम त्रुटि वाला है।
  • यदि कोई टीम स्व-आयोजन कर रही है, तो समय के साथ मानक विकसित होंगे जब टीम के सदस्य बदलते हैं - आपके पास एक विशाल कोडबेस होगा जो वर्तमान स्वीकृत मानकों का पालन नहीं करता है ।

यदि आप प्रक्रिया से पहले लोगों के बारे में सोच रहे हैं तो मैं केवल टीपीएस के बारे में पढ़ने का सुझाव दे सकता हूं: मनुष्य लीन का एक केंद्रीय हिस्सा है लेकिन प्रक्रियाएं अत्यधिक औपचारिक हैं।

बेशक, केवल एक टीम के साथ एक छोटा संगठन टीम को मानकों को अपनाने का फैसला करने दे सकता है , लेकिन फिर इसे नीचे लिखा जाना चाहिए। यहां प्रोग्रामर पर। यदि आप एरिक लिपर्ट द्वारा पोस्ट पढ़ सकते हैं: मुझे लगता है कि हम सभी सहमत हैं कि वह एक अनुभवी डेवलपर हैं, जब उन्होंने माइक्रोसॉफ्ट के लिए काम किया था तो उन्हें अपने लिखित दिशानिर्देशों का पालन करना था (भले ही कुछ नियम गलत हो सकते हैं , लागू या बेकार नहीं। उसे।) जॉन स्कीट के बारे में क्या? Google दिशानिर्देश बहुत सख्त हैं (और कई लोग उनसे सहमत नहीं हैं) लेकिन उन्हें इस तरह के दिशानिर्देशों का पालन करना चाहिए। क्या यह उनके लिए अपमानजनक है? नहीं, उन्होंने शायद ऐसे दिशानिर्देशों को परिभाषित करने और सुधारने के लिए काम किया है, एक कंपनी एक सदस्य (या एक टीम) द्वारा नहीं बनाई गई है और प्रत्येक टीम एक द्वीप नहीं है

उदाहरण

  • आपने C ++ में एकाधिक वंशानुक्रम और नेस्टेड कक्षाओं का उपयोग न करने का निर्णय लिया क्योंकि आप वास्तविक टीम के सदस्य इसे अच्छी तरह से नहीं समझते हैं । बाद में कोई व्यक्ति कई विरासत का उपयोग करना चाहता है, उसे देखने के लिए पूरे 1M LOC को अवश्य ब्राउज़ करना चाहिए। यह बुरा है क्योंकि अगर डिजाइन के फैसलों का दस्तावेजीकरण नहीं किया गया है तो आपको उन्हें समझने के लिए पूरे कोडबेस का अध्ययन करना होगा। और फिर भी, अगर इसका उपयोग नहीं किया गया है, तो क्या यह इसलिए है क्योंकि यह कोडिंग मानक के खिलाफ है, या इसकी अनुमति है, लेकिन वहाँ पहले से कोई भी ऐसी स्थिति नहीं थी जहां कई विरासत एक अच्छा फिट थीं?
  • C # में आपके पास डिफ़ॉल्ट पैरामीटर प्रदान करने के लिए ओवरलोड तरीके थे क्योंकि आपका कोड आधार तब शुरू हुआ जब वैकल्पिक पैरामीटर C # में उपलब्ध नहीं थे। फिर आप बदल गए और आपने उन्हें उपयोग करना शुरू कर दिया (पुराने कोड को फिर से उपयोग करने के लिए जब भी आपको ऐसे कार्यों को संशोधित करना पड़ा)। बाद में भी आपने तय किया कि वैकल्पिक पैरामीटर खराब हैं और आप उनका उपयोग करने से बचना शुरू करते हैं। आपका कोड आपको क्या नियम बताता है? यह बुरा है क्योंकि मानक विकसित होता है, लेकिन कोडबेस को विकसित करने के लिए धीमी है और अगर यह आपके दस्तावेज है तो आप मुसीबत में हैं।
  • जॉन टीम ए से टीम बी में चले गए। जॉन को एक नया मानक सीखना है; सीखने के दौरान वह संभवतः अधिक सूक्ष्म कीड़े (या, यदि भाग्यशाली होगा, तो मौजूदा कोड को समझने और कोड की समीक्षा को लंबा बनाने के लिए लंबा समय लेगा)।
  • टीम ए पहले टीम बी के स्वामित्व वाले कोडबेस में जाती है। इसमें पूरी तरह से अलग कोडिंग मानक हैं। पुनर्लेखन? अनुकूलन? मिक्स? उनमें से सभी समान रूप से बुरे हैं।

चाचा बॉब

पहले कुछ पुनरावृत्तियों के दौरान उन्हें विकसित होने दें।

सच है, जब तक आपके पास एक मानक नहीं है और आपके संगठन ने आपको एक निर्माण करने का काम सौंपा है ।

उन्हें कंपनी विशिष्ट के बजाय टीम विशिष्ट होने दें।

नहीं, ऊपर वर्णित सभी कारणों के लिए। यहां तक ​​कि अगर आप सिर्फ कोड फॉर्मेटिंग को औपचारिक रूप देना चाहते हैं (कम से कम उपयोगी चीज जिसे आप औपचारिक रूप देना चाहते हैं) तो भी मुझे फॉर्मेटिंग के बारे में अंतहीन (और बेकार) युद्धों की स्मृति है। मैं उन्हें बार-बार जीना नहीं चाहता, इसे सभी के लिए एक बार सेट करें।

यदि आप इससे बच सकते हैं तो उन्हें न लिखें। बल्कि, कोड को मानकों पर कब्जा करने का तरीका बताएं।

नहीं, ऊपर बताए गए सभी कारणों के लिए (निश्चित रूप से जब तक कि आप दिशा-निर्देश बदलने पर एक-शॉट में अपने सभी कोड को रिफैक्ट नहीं करेंगे)। क्या आप अपना कोड छोड़ना चाहते हैं? वर्तमान दिशानिर्देशों को समझने के लिए आप कोडबेस का निरीक्षण कैसे करते हैं ? फ़ाइल आयु के आधार पर खोज करना और अपनी कोडिंग शैली को स्रोत फ़ाइल उम्र के साथ जोड़ना?

अच्छा डिजाइन कानून मत करो। (उदाहरण के लिए लोगों को गोटो का उपयोग न करने के लिए कहें)

सच है, दिशानिर्देश कम होने चाहिए या कोई भी उन्हें नहीं पढ़ेगा। स्पष्ट दोहराएं नहीं।

सुनिश्चित करें कि सभी जानते हैं कि मानक संचार के बारे में है, और कुछ नहीं।

इतना ही नहीं, एक अच्छा मानक गुणवत्ता के बारे में है जब तक कि आप केवल मामूली विवरण के बारे में मानक नहीं रखना चाहते ।

पहले कुछ पुनरावृत्तियों के बाद, टीम को तय करने के लिए एकजुट हों।

पहला बिंदु देखें और यह मत भूलो कि एक कोडिंग मानक आमतौर पर एक ऐसी प्रक्रिया है जिसे विकसित होने और परिष्कृत होने में कई साल लग गए: कुछ पुनरावृत्तियों, शायद जूनियर डेवलपर्स के साथ? वास्तव में? क्या आप एक वरिष्ठ (यदि कोई है) सदस्य की स्मृति पर भरोसा करना चाहते हैं?

तीन नोट:

  • मेरी राय में कमियां कुछ अन्य भाषाओं की तुलना में अधिक गंभीर हैं, उदाहरण के लिए C ++ में एक कंपनी स्तर का मानक जावा की तुलना में और भी अधिक आवश्यक है।
  • यह तर्क पूरी तरह से लागू नहीं हो सकता है (और अंकल बॉब कारण कम चरम हो सकते हैं ) यदि आप एक बहुत छोटी कंपनी में काम कर रहे हैं जहां आपके पास सिर्फ एक छोटी टीम है।
  • आपको काम पर रखा गया है (टीम के रूप में) और आप अकेले एक नए प्रोजेक्ट के साथ काम करेंगे तो आप इसे भूल जाएंगे और आगे बढ़ेंगे। इस मामले में आप परवाह नहीं कर सकते हैं (लेकिन आपके नियोक्ता को ...)

5
मैंने इसे नीचा दिखाया है क्योंकि मुझे लगता है कि उत्तर प्रश्न के लिए ऑफ-टॉपिक है, यही वजह है कि आप (और विशेष रूप से अंकल बॉब) एक कोडिंग मानक नहीं लिखते हैं , इसलिए नहीं कि आपको क्यों करना चाहिए। मुझे लगता है कि हर कोई एक लिखित मानक होने के प्लस पॉइंट्स को समझता है, लेकिन डाउनसाइड्स निर्धारित करना कठिन है और जब उद्योग में सामान्य प्रैक्टिस का विरोध करने वाला एक प्रतिष्ठित उद्योग वरिष्ठ पद पर आता है, तो यह जांचना कि निश्चित रूप से एक सार्थक चीज क्या है।
जूल्स

5
@gnat धन्यवाद, मुझे ऑफ-टॉपिक पोस्ट्स के लिए upvotes की आवश्यकता नहीं है, "क्यों मिस्टर एक्स ने Y नहीं किया?" इस मामले में ऑफ-टॉपिक? हम उसके कारणों को नहीं जानते हैं और उसने उन्हें समझाया नहीं है, फिर प्रश्न को ऑफ-टॉपिक के रूप में बंद नहीं किया जाना चाहिए? आप इस प्रश्न का उत्तर कैसे देंगे ? यादृच्छिक कारणों का आविष्कार या यह कहना कि गलत है?
एड्रियानो रेपेती

1
@ AdrianoRepetti - अंकल बॉब ने वर्षों से बहुत कुछ समझाया है, इसलिए यह विचार करना उचित है कि किसी को उसके सोचने के तरीके में कुछ अंतर्दृष्टि हो सकती है, लेकिन आप सही हैं यदि अंकल बॉब की प्रत्यक्ष व्याख्या की आवश्यकता है।
जेफ

3
@ जेफ हां, अगर सवाल "वह ऐसा क्यों सोचता है" के बारे में है तो जवाब सिर्फ एक अनुमान है। यदि प्रश्न "क्या यह सही है?" तब मेरा व्यक्तिगत जवाब है d *** बिल्कुल नहीं।
एड्रियानो रेपेती

1
"जब उन्होंने माइक्रोसॉफ्ट के लिए काम किया तो उन्हें अपने लिखित दिशानिर्देशों का पालन करना पड़ा" - आपने शर्त लगाई कि मैंने किया। और निश्चित रूप से हमने कुछ खराब पैटर्न को रोकने के लिए FXCop और StyleCop का उपयोग किया है।
एरिक लिपर्ट

12
  1. उपयोगी होने के लिए एक कोडिंग मानक पदार्थ के मामलों के बारे में बात नहीं करना चाहिए; केवल शैली के मामले। इसमें केवल उन चीजों को निर्दिष्ट किया जाना चाहिए जो मनमानी और अस्पष्ट हैं। जैसे ब्रेस प्लेसमेंट, इंडेंटेशन डेप्थ, स्पेस बनाम टैब्स, नेमिंग कन्वेंशन आदि।
  2. शैली के मुद्दे स्थानीय हैं, वैश्विक नहीं। प्रत्येक टीम को अपनी अजीबोगरीब शैली अपनानी चाहिए, अपने काम और अपने व्यक्तित्व से मेल खाना चाहिए। यह मानकों को सरल और हल्का रखता है। कॉरपोरेट मानक सभी संभावित विचारों, विन्यासों और अपवादों से अधिक हो जाते हैं।
  3. एक टीम के भीतर, एक अलग कोडिंग स्टाइल दस्तावेज़ लिखने का एकमात्र कारण यह है कि टीम द्वारा निर्मित कोड मानक को पूरा नहीं करता है। जिस मामले में आपके पास कोई मानक नहीं है। प्रभावी होने के लिए, मानक को कोड द्वारा ही व्यक्त किया जाना चाहिए। और अगर ऐसा है, तो अलग दस्तावेज़ की कोई आवश्यकता नहीं है।
  4. विरासत प्रणालियों में टीम और शैली समय के साथ बदलती हैं। इसमें कुछ भी गलत नहीं है। पुराने कोड में पुरानी शैली होगी। नए कोड में नई शैली होगी। टीम को शैलियों, और उनकी उम्र के बारे में पता होना चाहिए। जब भी नया कोड लिखा जाता है, वह नई शैली में होना चाहिए, फिर चाहे वह कोड में ही क्यों न हो।

मेरे पास कुछ कमियां हैं: 1) उपयोगी होने के लिए एक कोडिंग मानक केवल स्वरूपण (पवित्र युद्धों की बात लेकिन कोड पढ़ने को समझने में आसान) के बारे में बात नहीं करना चाहिए, लेकिन पैटर्न से बचने के लिए, सामान्य गलतियों को रोकने के लिए, भाषा समझने में आसान नहीं है सुविधाएँ) और सुरक्षा मुद्दे। ये कोडिंग दिशा-निर्देश हैं (स्वरूपण मुद्दों से अधिक उपयोगी)। 2) बिंदु 1 के आधार को देखते हुए फिर यह व्यक्तित्व के बारे में नहीं है (लेकिन यह कार्यों के बारे में हो सकता है ), आपके पास हल्के कॉर्पोरेट मानक हो सकते हैं, इसे हल्का बनाना आपका अपना कर्तव्य है।
एड्रियानो रेपेती

3) कोड आपको बता सकता है कि क्या करना है, लेकिन यह बता नहीं सकता कि आपको क्या करना चाहिए (जब तक कि आप पूरे कोड आधार का अध्ययन नहीं करना चाहते हैं और उस स्थिति में भी ... बस एक्स निर्माण का उपयोग करने के लिए ऐसा नहीं हुआ या यह नहीं है a-no?) एक और महत्वपूर्ण बात तर्क है: क्यों नहीं? और हाँ क्यों? समय के साथ चीजें बदल सकती हैं लेकिन आपको कैसे पता चलेगा कि शुरुआती परिसर अभी भी वैध हैं? 4) और जब आप एक नए टीम के सदस्य होते हैं और आप नया कोड लिखते हैं ... क्या आप उस कोडिंग शैली को बनाए रखने के लिए उसी उम्र के साथ कोड आधार का अध्ययन करते हैं? जिस दिन आप किसी अन्य नए घटक में जाते हैं और आप कोडबेस का फिर से अध्ययन करते हैं (निर्माण तिथि को
छानते हैं

BTW अगर, इसके बजाय, आप केवल कोड स्वरूपण शैलियों को लिखने का सुझाव नहीं देते हैं, तो मैं सहमत हो सकता है (ठीक है, वास्तव में नहीं लेकिन इतने मजबूत कारणों के अलावा अंतहीन और बेकार चर्चाओं की यादें जो अनिवार्य रूप से हर बार पैदा होती हैं - और जो एक कॉर्पोरेट दिशानिर्देश हैं) सभी के लिए एक बार से बचना होगा) हालांकि आपको इसे स्पष्ट करना चाहिए या लोग आपके शब्दों की शाब्दिक व्याख्या करेंगे (अधिकांश उत्तर + टिप्पणियां यहां देखें)। इसके अलावा "गोटो" के बारे में इस अर्थ में थोड़ा भ्रामक है (IMO)
Adriano Repetti

4

मुझे एक कोडिंग मानक क्यों नहीं लिखना चाहिए?

इसके लिए कई कारण हैं। यहाँ कुछ विचार हैं:

  1. लोग कोड मानकों को "सीखने" के लिए कितना समय दे रहे हैं, इसके लिए पूरी टीम की समीक्षा, चर्चा, दस्तावेज, संशोधन ... आदि कोड मानकों में बहुत समय लगता है। यह आपकी "कर्मचारी पुस्तिका" पर लगातार चर्चा करने जैसा है - एक टीम मीटिंग के एजेंडे पर यह कितनी बार बनता है ??

  2. जब कोई प्रोजेक्ट डिफेंडेड / शेल्ड / वगैरह हो जाता है। फिर कुछ लोग जो सामान्य तौर पर बने रहते हैं, वे मानकों का पालन नहीं कर सकते (या शायद पढ़े भी नहीं हैं)। अगली बात जो आप जानते हैं, "कोड को साफ रखने" का वह सारा प्रयास वैसे भी बहुत अधिक व्यर्थ था।

  3. यदि परियोजना स्टॉल या एक नया नेतृत्व लाया जाता है, तो यह बहुत संभावना है कि व्यक्ति पिछले नियमों की पूरी तरह से अनदेखी करेगा और इसे एक नया तरीका देना चाहेगा। फिर, क्या मानकों को संहिताबद्ध करके प्राप्त किया गया था ??

आपको # 6 पढ़ने के लिए सुनिश्चित होना चाहिए:

पहले कुछ पुनरावृत्तियों के बाद, टीम को तय करने के लिए एकजुट हों।

दूसरे शब्दों में, जब एक परियोजना शुरू करने का समय होता है, तो बस थोड़ी देर के लिए प्रवाह के साथ जाएं। फिर कोडिंग मानकों के सामान्य नियमों पर चर्चा करें जो वर्तमान टीम उपयोग कर रही है - और मूल रूप से उनका अनुसरण करती है। इस तरह, आप उस प्रयास को अधिकतम करते हैं जो "वाक्यविन्यास चीनी" लिखने, समीक्षा करने और दस्तावेज़ करने के लिए आवश्यक प्रयास को कम से कम करते हुए उत्पाद में सुधार करता है, जो निष्पादन योग्य कोड प्राप्त करता है।

बहुत कम टीमें कोडिंग मानकों से भारी लाभ प्राप्त करती हैं। आमतौर पर, "पठनीयता" बहुत अस्पष्ट है - और अधिकांश डेवलपर्स को रिक्ति, नई लाइनों आदि पर सटीक नियमों से बहुत लाभ नहीं होता है , लेकिन आप कम से कम कुछ नियम होने से लगातार कष्टप्रद डेवलपर्स से बच सकते हैं।


4

एक और जवाब जो मुझे नहीं लगता कि स्पष्ट रूप से पर्याप्त बताया गया है, यह है कि इसका मतलब यह भी है कि लोग नियमों का आँख बंद करके पालन नहीं करते हैं। इसका मतलब है कि लोगों को अपने डिजाइन निर्णयों और कोडिंग सम्मेलनों के लिए वास्तविक औचित्य के साथ आना होगा , न कि केवल इस तथ्य पर निर्भर करता है कि इसे सही ठहराने के लिए लिखा गया है।


4

सबसे पहले, जहां तक ​​मुझे पता है, चाचा बॉब एक ​​जावा व्यक्ति हैं, यह समझने के लिए बहुत महत्वपूर्ण है कि वह क्या कहते हैं।

जावा या सी # टीम में काम करते समय, यदि वर्तमान कोड अनुभवी डेवलपर्स द्वारा लिखा गया है, तो मेरे लिए कोडिंग शैली चुनना और उसके साथ बने रहना आसान है। अगर मैं ऐसा करने के लिए तैयार नहीं हूं, तो शायद मैं नौकरी के लिए सही व्यक्ति नहीं था ... अगर शैली में नहीं रखने पर मुझे लेने के लिए कोई कोड समीक्षा या जोड़ी प्रोग्रामिंग नहीं है, तो कंपनी के पास एक है जिस तरह से मैं सदस्य क्षेत्रों नाम से बड़ी समस्या है!

अधिकांश आधुनिक भाषाओं के साथ-साथ जावा और सी # दोनों को परिभाषित किया गया है ताकि प्रोग्रामर के गिरने के लिए कुछ "सरल" जाल हो।

हालाँकि जब मैंने प्रोग्रामिंग शुरू की तो मैं C (और बाद में C ++) का उपयोग कर रहा था। C में आप जैसे कोड लिख सकते हैं

if (a = 3);
{
   /* spend a long time debugging this */
}

कंपाइलर एक त्रुटि नहीं देगा, और बहुत सारे कोड को पढ़ते समय स्पॉट करना कठिन है। हालाँकि, यदि आप लिखते हैं:

if (3 = a)
{
   /* looks odd, but makes sense */
}

कंपाइलर एक त्रुटि देता है, और मुझे कोड को बदलने में आसान है 3 == a। इसी तरह, यदि कोडिंग मानक =किसी ifशर्त या "खाली ifविवरण" के भीतर उपयोग करने की अनुमति नहीं देता है , तो इस त्रुटि को ट्रैक करने के लिए एक कोड चेकर का उपयोग बिल्ड सिस्टम के हिस्से के रूप में किया जा सकता है।

कोडिंग मानकों पर मेरे विचार बहुत बदल गए जब मैं सी / सी ++ से दूर चला गया: मुझे ऐसे कोडिंग मानक पसंद थे जो कड़ाई से लागू किए गए थे, और कई पृष्ठ लंबे थे। अब मुझे लगता है कि आपको केवल उपयोग किए जा रहे उपकरणों को सूचीबद्ध करने की आवश्यकता है, और कुछ नामकरण सम्मेलनों पर मूल टीम के सदस्यों के बीच अनौपचारिक समझौता करना है। हम अब C / C ++ में एप्लिकेशन लिखने वाले 30 से अधिक डेवलपर्स की टीमों की दुनिया में नहीं रहते ...

एक कारण है कि मुझे JScript पसंद नहीं आया और मुझे लगता है कि टाइपस्क्रिप्ट वेब डेवलपमेंट के लिए सालों से सबसे अच्छी चीज है। मुझे उम्मीद है कि HTML / CSS / JScript आदि के डिज़ाइन में दोषों के कारण वेब UI डेवलपर्स को अभी भी कोडिंग मानकों की आवश्यकता है।


4
"कंपाइलर एक त्रुटि नहीं देगा" अधिकांश आधुनिक सी और सी ++ कंपाइलर चेतावनी के साथ इस तरह के व्यवहार की रिपोर्टिंग का समर्थन करते हैं या, यदि वांछित है, तो पूर्ण त्रुटियां। gcc.gnu.org/onbuildocs/gcc/Warning-Options.html
JAB

2
"सबसे पहले जहां तक ​​मैं जानता हूं कि अंकल बॉब एक ​​जावा व्यक्ति है, यह समझने में बहुत महत्वपूर्ण है कि वह क्या कहता है", यह सच नहीं है, अंकल बॉब ने सी ++ पर शानदार लेख लिखे हैं और उन्होंने निश्चित रूप से सी के साथ कई वर्षों तक काम किया है।
एलेसेंड्रो टेरुज़ी

@JAB, शुक्र है कि C / C ++ का उपयोग नए "व्यावसायिक अनुप्रयोगों" के लिए बहुत समय पहले किया जा रहा था, (जैसे मॉडेम C / C ++ कंपाइलर से पहले), और अब ज्यादातर केवल C / C ++ विशेषज्ञों द्वारा उपयोग किया जाता है, बल्कि तब लोग जो UI विशेषज्ञ हैं (MFC) उदाहरण के लिए।
इयान

1
@AlessandroTeruzzi एक इकाई परीक्षण आपको बताएगा कि एक विधि विफल हो रही है। यह क्यों विफल हो रहा है यह एक अलग मामला है - भले ही आपके पास उस तरह के कोड के साथ एक विधि के लिए यूनिट परीक्षण थे, आपके पास वास्तव में कठिन समय होगा यह पता लगाने की कोशिश करना कि क्या गलत है। सी ++ डिबग करने वाली सबसे दंडनीय भाषाओं में से एक है।
टी। सर।

2
मुझे लगता है कि यहां एक गलतफहमी है, आप अंकलोबा का एक भी वाक्य नहीं ले सकते हैं और इसे अलगाव में विश्लेषण कर सकते हैं। यदि आपके पास छोटे वर्ग, संक्षिप्त विधि और बुलेटप्रूफ यूनिट टेस्ट कवरेज वाला सोलिड सॉफ्टवेयर है, तो कोडिंग मानक बेमानी है। यदि आपके पास कमजोर कोड, विशाल इंटरफ़ेस, बड़े कार्य और थोड़ा कवरेज है, तो कोडिंग मानक आपको कुछ लाभ दे सकता है। लेकिन, अंकलबॉस के पास एक नहीं करने का सुझाव नहीं है, लेकिन इसे सहयोग और रिफैक्टिंग के साथ मौखिक रूप से फैलाने के लिए (स्रोत आधार से कमजोर कोड हटा दें)। अपने कोड को जीवित कोडिंग मानक बनाएं।
एलेसेंड्रो टेरुज़ि

3

स्रोत का स्व-दस्तावेजीकरण कोडिंग मानक होना दो बातों का तात्पर्य है।

  1. प्रवीण योगदानकर्ता बनने के लिए लोगों को कोड आधार से परामर्श करना चाहिए और इसकी समीक्षा करनी चाहिए। यह अविश्वसनीय रूप से महत्वपूर्ण है। कोड बेस में डाइविंग की तुलना में कोडिंग दिशानिर्देश पढ़ना समय की बर्बादी है।
  2. यह मानता है कि मामूली अंतर महत्वहीन हैं। बुनियादी सिद्धांतों पर सहमत होना और समझना महत्वपूर्ण है। एक सुसंगत शैली बनाए रखने के लिए l'art pour l'art के रूप में पीछा नहीं किया जाता है। यह अप्रभावी नाइटपिकर्स को अन्य लोगों को नाराज और विचलित करने की अनुमति नहीं देता है। यह एक टीम में कोड के माध्यम से संचार को सुविधाजनक बनाने के बारे में है।

2

एक बार-बार अद्यतन और अच्छी तरह से लिखा गया कोड मानक दस्तावेज़ बहुत उपयोगी हो सकता है, लेकिन आमतौर पर ऐसा नहीं होता है। मानकों का दस्तावेज़ कंपनी द्वारा उपयोग किए जाने वाले वास्तविक कोडिंग मानकों को प्रतिबिंबित नहीं करता है क्योंकि यह एक अच्छा मानक दस्तावेज़ बनाने के लिए बहुत कठिन है और यहां तक ​​कि इसे बनाए रखने के लिए और भी मुश्किल है।

खराब और भ्रामक कोडिंग मानकों के दस्तावेज़ होने के बजाय, किसी के पास नहीं होना बेहतर है और कोड को स्वयं उन मानकों का प्रतिनिधित्व करने दें। किसी भी तरह से कोड में मानकों को लागू करने के लिए सबसे महत्वपूर्ण हिस्सा है, और इसके लिए केवल एक दस्तावेज की तुलना में बहुत अधिक आवश्यकता होती है। प्रेरणा, प्रक्रिया, प्रशिक्षण, उपकरण आदि बहुत अधिक महत्वपूर्ण हैं।


2

एक बहुत महत्वपूर्ण बात जो स्पष्ट रूप से पर्याप्त नहीं बताई गई है वह यह है कि कोडिंग मानक भाषा की तरह हैं: वे विकसित होते हैं। एक लिखित कोडिंग मानक इस तरह से खड़ा है, और अगर ऐसा नहीं है तो यह लगातार पुराना और बेकार है।

कोडिंग मानक का नामोनिशान न होना उतना बुरा नहीं है। यदि आप चेक-इन पर सहकर्मी की समीक्षा करते हैं, तो जब भी कुछ ऐसा होता है जो कोडिंग मानक के अनुरूप नहीं होता है तो रिपॉजिटरी में प्रवेश होता है, जिसका अर्थ है कि 2 लोगों ने इसके बारे में सोचा था * और इस भिन्नता के लाभ का फैसला किया और बाकी कोड के साथ असंगति को रेखांकित किया।

लिखित डाउन स्टैंडर्ड नहीं होना भी लाल टेप को हटा देता है जो एक कंपनी की एक टीम को एक नए प्रोजेक्ट के लिए कोडिंग मानक के एक नए बदलाव की कोशिश करने से रोक देगा, क्योंकि या तो वे कुछ आज़माना चाहते हैं, या हो सकता है क्योंकि एक अलग मानक में व्यावहारिक अनुप्रयोग हैं कुछ स्वचालित उपकरणों का वे उपयोग करते हैं।

एक मानक के नीचे लिखने से मूल रूप से अधिक लचीलेपन को हटाने की प्रवृत्ति होती है, जबकि काफी समय लग रहा है जो कि कुछ चीजों को करने में खर्च किया जा सकता है। मैं यह नहीं कह रहा हूं कि आपको कभी भी कोडिंग मानकों को नीचे नहीं लिखना चाहिए, लिखित मानकों में निश्चित रूप से उनके लाभ हैं, खासकर यदि विभिन्न स्थानों में काम करने वाली टीमें एक ही कोड आधार पर काम करती हैं।

दृढ़ता से संबंधित: कोडिंग मानकों में विकास, आप उनके साथ कैसे व्यवहार करते हैं?


* यदि लोग चेक-इन पर सहकर्मी की समीक्षा करते समय नहीं सोचते हैं, तो आपकी समस्याएं सिर्फ कोडिंग मानकों से बहुत बड़ी हैं।


1

उन्हें बदलना एक बड़ी बाधा बन जाता है, और लोग दिमाग को उलझाने के बजाय कानून के पत्र का सुरक्षित रूप से पालन करेंगे और सही काम करेंगे।

एक दिन आएगा जब मानक का हिस्सा बेकार है, और कोड को बदतर बना देता है। कुछ लोग मानक का पालन करेंगे, क्योंकि यह नीचे लिखा गया है और वे सुरक्षित हैं, और क्योंकि नियमों का पालन किया जाना है। जो लोग मानक-अनुरूप कोड के बजाय अच्छा कोड लिखना चाहते हैं, वे निराश और क्रोधित होंगे। तर्क और असहमति होगी, जबकि यदि मानक नीचे नहीं लिखा गया था, तो अन्वेषण और चर्चा होगी।


0

मुझे लगता है कि यहां कई पोस्ट स्टाइल गाइड के साथ कोडिंग मानक को भ्रमित कर रहे हैं

यह सुनिश्चित करना कि विभिन्न टीमों द्वारा विकसित मॉड्यूल में एक ही संकलक विकल्प हैं और एबीआई एक अलग तरह की चीज है, जिसमें से कितने रिक्त स्थान हैं।

#Include फ़ाइलों को संरचना करने और हेडर फ़ाइल में वैश्विक नाम स्थान को प्रदूषित न करने के लिए उचित तरीके जैसी चीजों को प्रलेखित किया जाना चाहिए ताकि उन्हें प्रारंभिक कोडिंग और कोड समीक्षाओं के दौरान चेकलिस्ट के रूप में उपयोग किया जा सके।

विशेष रूप से "XXX का उपयोग न करें क्योंकि यह YYY के साथ संगतता समस्याओं का कारण बनता है" ऐसा कुछ नहीं है जिसे आप अन्य कोड का अनुसरण करके उदाहरण के लिए देखेंगे, क्योंकि यह वहां नहीं है। तो कोड को जिस तरह से मानकों पर कब्जा कर लिया गया है वह अस्पष्ट हो सकता है या कुछ प्रकार के मानकों के लिए पूरी तरह से गायब हो सकता है, और इस तरह यह एक सार्वभौमिक योजना नहीं हो सकती है।

कुछ गंभीर रूप से व्यापक और महत्वपूर्ण जैसे अपवादों का उपयोग नहीं करना या newकुछ एम्बेडेड सिस्टम में उपयोग नहीं करना, केवल सामान्य संस्कृति ज्ञान होने के लिए नहीं छोड़ा जा सकता है, क्योंकि "जानकारी सांस्कृतिक (केवल)" आईएसओ-9000 जैसे विनिर्माण मानकों के मूल सिद्धांतों का विरोधाभासी है, कि इन एम्बेडेड सिस्टम का डेवलपर उपयोग कर रहा है (जैसे मोटर वाहन अनुप्रयोगों के लिए)। इन महत्वपूर्ण चीजों को औपचारिक रूप से प्रलेखित, हस्ताक्षरित किया जाना चाहिए और औपचारिक रूप से दूर रखा जाना चाहिए।

लेकिन यह कोडिंग पर लागू होता है , स्टाइल के लिए नहीं ।

C और C ++ के आविष्कारक , उदाहरण के लिए, निचले मामलों के नामों का उपयोग करते हैं और CaMelCaSe नहीं । तो क्यों कई डेवलपर्स फव्वारे से निहित उदाहरण का पालन नहीं करते हैं? मानक पुस्तकालय और विहित शिक्षण सामग्री की शैली का पालन करने की अंतर्निहित शैली नहीं होनी चाहिए?

इस बीच, लोगों करना है कि, कॉपी किया जा नहीं करना चाहिए के उपयोग जैसी चीजों के लिए मानक पुस्तकालय हेडर के उदाहरण का अनुसरण __Uglyमैक्रो मापदंडों के लिए नाम और The फाइल गैर दोहराने पैटर्न शामिल हैं।

इसलिए सामान रखने को अक्सर महत्वपूर्ण शैली के रूप में नहीं देखा जाता है, या इसके विपरीत उदाहरणों में यह स्पष्ट नहीं हो सकता है कि परियोजना कोड में क्या नहीं होना चाहिए । दोनों थीसिस के प्रतिरूप हैं कि "स्टाइल" (या कोडिंग कन्वेंशन) सबसे अच्छा निहित है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.