क्या संगठनों में कोडिंग शैली एक वैकल्पिक चीज है?


30

इस प्रोग्रामिंग स्टाइल डॉक्यूमेंट में एक सामान्य नियम है, जो कहता है:

नियमों का उल्लंघन किया जा सकता है अगर उनके खिलाफ मजबूत व्यक्तिगत आपत्तियां हैं।

यह मेरे सोचने के तरीके से टकराता है, और कई लेख कह रहे हैं कि कोडिंग शैली वास्तव में महत्वपूर्ण है। उदाहरण के लिए यह कहता है:

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

तो, क्या मैं इस दस्तावेज़ और इस प्रश्न के शीर्ष पर कुछ गलत समझ रहा हूं ? क्या लोग वास्तव में सिर्फ कोडिंग शैली की उपेक्षा कर सकते हैं?


शायद मैं पर्याप्त स्पष्ट नहीं था, इसलिए इस संपादन के साथ, मैं थोड़ा स्पष्ट करने जा रहा हूं।

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

लेकिन फिर, यदि उद्धरण सही है, तो कोडिंग शैली दस्तावेज़ का उपयोग क्या है, अगर कोई भी जो चाहे कर सकता है?


जवाब, जाहिर है, यह निर्भर करता है। नीचे दिए गए सभी उत्तर अलग-अलग कंपनियों में अलग-अलग टीमों के लिए सही हैं जिनकी अलग-अलग संस्कृतियाँ हैं। आप जो भी प्रस्ताव करते हैं, वह टीम के लिए क्या होगा, इसके साथ फिट होना चाहिए - और आपको इस बात का अंदाजा होना चाहिए क्योंकि आपने निश्चित रूप से टीम के सदस्यों के साथ व्यक्तिगत रूप से या छोटे समूहों में अनौपचारिक रूप से इस पर चर्चा की है। व्यक्तिगत रूप से मुझे a) कुछ भी पसंद है जो मैं बस Emacs, Visual Studio और IntelliJ IDEA में विकल्प चुन सकता हूं, और b) किसी भी परिस्थिति में फ़ाइलों में बिल्कुल कोई हार्ड टैब नहीं है! बाकी सब कुछ के लिए टीम जो चाहती है वह ठीक है।
दाविदबक

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

आपके द्वारा लिंक की गई शैली doc "a" सुझाई गई कोडिंग शैली doc है; यह "डॉक" शैली नहीं है। यदि आप अपनी साइट का डॉक बना रहे हैं, तो इस का उपयोग करें जहाँ तक यह अच्छी तरह से फिट बैठता है। यदि आपको आपत्तियां हैं, तो उसके अनुसार अपना डॉक्टर बदलें । उदाहरण के लिए, उन बयानों को छोड़ दें जिन्हें आप पसंद नहीं करते हैं।
user2338816

"नियमों का उल्लंघन किया जा सकता है अगर उनके खिलाफ मजबूत व्यक्तिगत आपत्तियां हैं।" कभी-कभी यह एक राजनीतिक विचार है: चरण 1 ऑप्ट-इन है। इसके बिना एक पुराने स्कूल के वरिष्ठ सहकर्मी कोड मानकों के विचार को पूरी तरह से मार सकते हैं।
ब्रायन_

जवाबों:


12

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

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

ये आपत्तियां गलत हो सकती हैं, आप पर ध्यान दें, लेकिन (और यह एक बहुत ही बड़ा BUT है) वे यह भी संकेत दे सकते हैं कि एक विशेष नियम गलत है - या तो आम तौर पर या विशिष्ट परियोजना के संदर्भ में (नियम मिसफिट का एक उदाहरण प्रदान करने की आवश्यकता है) प्रदर्शन महत्वपूर्ण कोड में विस्तृत प्रवेश)।

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

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

आप ऊपर दिए गए बेहतर को पसंद कर सकते हैं और आप इसे हर किसी के लिए हर जगह इस तरह से चाह सकते हैं, लेकिन उस चुनौती को करीब से देखें / नजरअंदाज कर दें / भाग समायोजित करें और खुद से पूछें कि इसे कैसे लागू किया जा सकता है। अपने आप से पूछें कि प्रोजेक्ट और टीम के आधार पर इसमें कितना समय लग सकता है । यदि एक घंटा लगता है, तो क्या यह स्वीकार्य है? क्या होगा अगर यह एक दिन, या एक सप्ताह, या ... एक महीना लेता है?

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

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


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

यदि आप अपने विकास वर्कफ़्लो में कई बाधाओं को शामिल किए बिना इस प्रक्रिया को काम करने का एक तरीका बताते हैं, तो चुनौती / संकल्प दृष्टिकोण को औपचारिक और आसान ट्रैक करना वास्तव में अराजक "उल्लंघन करने के बजाय यदि आप पर्याप्त जोर से रोते हैं" पर विचार करने के लायक है।


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

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


इसे इस तरह से प्रस्तुत करें: हमारी टीम छोटी है, और हमारी प्रक्रिया में मेरे बॉस (जो कि सिर्फ एक टीम लीडर है) से ऊपर कोई भी शामिल नहीं है। तो, जैसा आपने ऊपर बताया खेल ऐसा होने वाला नहीं है।
B45овиЈ

@ उस मामले में चुनौती / संकल्प दृष्टिकोण एक स्पष्ट विजेता दिखता है
gnat

53

व्यक्तिगत पसंद के कारण लोगों को कोडिंग शैलियों को अनदेखा करना एक बुरा विचार है।

आपके प्रश्न का उद्धरण किसी भी डेवलपर को केवल यह कहने की अनुमति देता है कि "मैं इस शैली का उपयोग नहीं करने जा रहा हूं क्योंकि मुझे यह पसंद नहीं है।"

यह पूरे बिंदु के खिलाफ जाता है, जो टीम पर सभी को चीजों को एक ही तरह से करने और स्थिरता के लिए काम कर रहा है।

मैं मानता हूं कि इस तरह के बयान के साथ एक स्टाइल दस्तावेज़ शायद व्यर्थ है।

फिर भी, शैली दिशानिर्देशों का पालन करने में कुछ लचीलापन उचित है:

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

निष्कर्ष में: अपनी टीम की जरूरतों को पूरा करने के लिए स्टाइल दिशानिर्देशों का पालन करने में लचीलेपन की अनुमति दें - लेकिन व्यक्तिगत प्राथमिकता के लिए मनमाने कारणों के लिए नहीं।


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

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

1
मेरी कंपनी में कोड स्टाइल पालन इतना महत्वपूर्ण है कि हमारे पास हमारे बिल्ड पाइपलाइन के हिस्से के रूप में हमारे कोड पर PEP8 मानकों को लागू करने के लिए PyLint है। कोड स्वास्थ्य को कम करने वाले कमिट ऑटो-अस्वीकृत हैं।
सेथमलारसन

1
आपको आवश्यक परिणाम प्राप्त करने के लिए नियमों की पर्याप्त जांच करें। समस्याओं के कारण को अनदेखा करें, अपडेट करें या माफ करें। खुशी और उत्पादकता का व्यापार करने के लिए सामान्य ज्ञान की एक उपयुक्त राशि लागू करें
शॉन होउलहेन

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

13

कोड को अधिक पठनीय बनाने में सहायता के लिए कोडिंग शैली और शैली मार्गदर्शिकाएँ मौजूद हैं। और जटिलता के साथ मदद करने के लिए पठनीयता मौजूद है।

इसलिए अंततः या नहीं (मैं इसे अनुकूल कहूंगा) का उल्लंघन करते हुए अपनी संगठनात्मक ज़रूरतों को पूरा करने के लिए कोडिंग शैली नीचे आती है कि यह चीजों को समझने में कितना मदद करता है।

याद रखें, सब कुछ, और मैं तनाव, कभी-कभी, ओओ प्रोग्रामिंग से लेकर कार्यात्मक प्रतिमानों, विभिन्न संगामिति मॉडल तक, जटिलता से निपटने में लोगों की मदद करने के एकमात्र कारण के लिए मौजूद है।

कोई भी मूर्ख कोड लिख सकता है जिसे कंप्यूटर समझ सकता है। अच्छे प्रोग्रामर कोड लिखते हैं जिसे मनुष्य समझ सकते हैं। - मार्टिन फाउलर, 2008


आपका उत्तर हां या नहीं स्पष्ट नहीं है। तो, क्या आप कह रहे हैं कि यह वास्तव में वैकल्पिक है? आराम के साथ - मैं सहमत हूं।
B42овиЈ

3
हां, यह वैकल्पिक है यदि इसका उल्लंघन वास्तव में मदद करता है (विरासत कोड सोचें)। नहीं, यह नहीं है यदि आप केवल ऐसा करते हैं क्योंकि आपको ऐसा लगता है और यह कोई उचित लाभ नहीं लाता है। तो मैं जो कह रहा हूं वह पत्थर में सेट नहीं है। जटिलता को कम करने के अंतिम लक्ष्य के लिए कुछ भी या कुछ भी तोड़ दें।
ट्रेकरोड

3
@ B @овиЈ क्या treecoder अनिवार्य रूप से कह रहा है कि आपके पास गलत फोकस है। नियम जादू नहीं हैं। आप नियमों के एक सेट का सख्ती से पालन करके जादुई रूप से सब कुछ बेहतर नहीं करेंगे। तो आपको इस बारे में सोचना होगा, "ये नियम क्या पूरा करने वाले हैं?" इसके बजाय, और आप इसके बजाय उस लक्ष्य की ओर काम करते हैं । नियम आपको बताते हैं कि आपका डिफ़ॉल्ट क्या होना चाहिए; यदि नियमों का पालन करना उस लक्ष्य के विरुद्ध काम करता है, जिसे वे पूरा करने के लिए लगाए गए थे, तो वे उस मामले में निम्नलिखित के लायक नहीं हैं ।
jpmc26

6

क्या संगठनों में कोडिंग शैली एक वैकल्पिक चीज है?

संगठन कोडिंग शैलियों का विकल्प चुनते हैं - पहली जगह में होने की कोई आवश्यकता नहीं है।

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

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

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


1
पुन: "अधिकांश सुपर हैकर्स मुझे पता है कि उनके कौशल जैसे ही अहंकार के साथ आते हैं": मुझे नहीं लगता कि यह सच है। वे बड़े अहंकारी प्रतीत हो सकते हैं क्योंकि वे स्वचालित रूप से दूसरों की राय को नहीं टालते हैं, लेकिन जिन लोगों को मैंने जाना है वे सभी बहुत खुले विचारों वाले हैं यदि आप जो कर रहे हैं उसके लिए एक अच्छा मामला बना सकते हैं। (हालांकि मुझे यकीन है कि नहीं कर रहा हूँ कि "अहंकार" वास्तव में conformism के विपरीत, वैसे भी है।)
ruakh

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

1
"और बनाता है विफल नहीं है और कोड समीक्षा स्वचालित रूप से सभी कंपनियों पर शैली के उल्लंघन के कारण विफल नहीं होते हैं" वास्तव में मैंने एक कंपनी के लिए काम किया जो वास्तव में उस मार्ग पर चला गया था, और परिणाम लक्स प्रवर्तन से पहले की तुलना में बेहतर था मानकों।
एंडी

3

तो, क्या मैं इस दस्तावेज़ और इस प्रश्न के शीर्ष पर कुछ गलत समझ रहा हूं? क्या लोग वास्तव में सिर्फ कोडिंग शैली को अनदेखा कर सकते हैं?

निर्भर करता है।

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

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

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


1
बस आखिरी हिस्से का जवाब देने के लिए: कुछ पुस्तकालयों को आउटसोर्स करना उच्च प्रबंधन का निर्णय था। और मेरी टीम का वहां काम करने वालों पर कोई प्रभाव नहीं है। उनकी कोडिंग शैली पूरी तरह से अलग है।
B25овиЈ

"हमारे पास एक बड़ा पर्याप्त समूह और मजबूत पर्याप्त संस्कृति है जो यह सुनिश्चित करने के लिए है कि टीम में कोई भी नया सदस्य लाइन में पड़ेगा" जैसे कि आपके पास कम से कम कुछ शैली दिशानिर्देश हैं, वे बस नीचे नहीं लिखे गए हैं?

@ dan1111 - पक्का? मेरा मतलब है कि वे शायद "अपने साथियों को नाराज न करें" पर उबालते हैं, लेकिन सवाल विशेष रूप से दस्तावेजों और प्रकाशन के बारे में पूछा गया है।
तेलस्टिन

2

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

हर नियम के अपवाद हैं। लोगों को "कुछ" wiggle कमरा दें। कम सभी लोग कोडिंग शैली के नियमों (नए व्यक्ति का स्वागत करते हैं) को स्वीकार करने में शामिल हैं, जितना अधिक वे वापस लड़ने के लिए इच्छुक हैं। कई चीजें काले और सफेद हैं, लेकिन कुछ व्याख्या के लिए खुले हैं।

लक्ष्य हर छोटे विस्तार और व्याख्या पर लड़ने के बजाय सभी को कोडिंग दिशानिर्देशों की भावना में शामिल होना चाहिए।

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


तो, आपका सुझाव जेनकिंस में एक नौकरी को तैनात करने का है, जो किसी व्यक्ति को किसी चीज़ की जांच करते ही फ़ाइल को पुन: स्वरूपित करने जा रहा है? BTW "wiggle कमरा" है मुझे लगता है कि इस जवाब में जैसा कि कुछ परिचित है ।
B atовиЈ

अगर यह काम पूरा कर लेता है और किसी ऐसी चीज पर एक घंटे की चर्चा को रोकता है, जो बिना किसी प्रयास के सही हो सकती है, तो इसका जवाब भी मिलता-जुलता है, लेकिन मुझे लगता है कि इसका मनोबल और टीम की मानसिकता के साथ ज्यादा लेना-देना है। आप मानकों को कोडित किए बिना अराजकता हो सकते हैं जैसे कि बहुत अधिक आसानी से।
जेफो

2

आपके संपादन के आधार पर, सही लक्ष्य के लिए आपका लक्ष्य।

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

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

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

सुनिश्चित करें कि स्टाइल उल्लंघन एक "चेतावनी" है और "विफल" नहीं है, यदि उल्लंघन विफल हो जाता है, तो मानव निर्णय लें। इतना सरल होने का कारण। मैं एक साधारण काम प्रवाह में विश्वास करता हूं। यदि "परीक्षण" चरण में कहीं "फेल" होता है तो आप उत्पादन पर जोर नहीं दे सकते। मैं एक सुरक्षा के रूप में उपयोग करता हूं। यहां तक ​​कि हॉट फ़िक्स को एक परीक्षण चरण (हालांकि एक छोटी एक) से गुजरना पड़ता है। क्या वास्तव में आप यह कह सकते हैं कि आप उस महत्वपूर्ण बग को उत्पादन में नहीं बढ़ाएंगे क्योंकि किसी ने "के बजाय" का उपयोग किया है? प्रत्येक के बजाय लूप के लिए उपयोग करने के बारे में? क्या होगा यदि लूप के लिए प्रत्येक पर कुछ सुधार होता है? ऐसे निर्णय हैं जो एक मशीन (लिंटर) नहीं कर सकते हैं, इसलिए एक मानव होना सुनिश्चित करें, चेतावनी का न्याय करें, न कि मशीन एक विफलता को फेंक दें।

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


0

मुझे लगता है कि यहां मूड संगीत यह है कि यदि स्वीकृत ज्ञान यह है कि कोडिंग मानक गलत या अधूरे हैं, तो यह दो बुराइयों को दबाने के लिए कम है अगर डेवलपर्स सामान्य समझौते में हैं, बल्कि दर्शक प्राप्त करने की कठिन प्रक्रिया से गुजरते हैं। दस्तावेज़ बदल गया और पुन: समीक्षा की गई।

यह भी ध्यान दिया जाना चाहिए कि yesteryear की कोड मानक प्रवर्तन नीतियां आमतौर पर उस तरह से नहीं होती हैं जिस तरह से अब की जाती हैं।

पुराने दिनों में, आप डेवलपर्स के डेस्क के अंत में ठुमके लगाते हुए रॉक करेंगे और अध्याय और कविता को उद्धृत करेंगे कि उसका कोड धारा 34.5.5767 का उल्लंघन क्यों है।

अब हमारे पास स्थैतिक कोड विश्लेषण और ऑटो-दस्तावेज़ीकरण उपकरण हैं जो कोड मानकों की बहुत अधिक मात्रा में ले जाते हैं।

इस सब को विफल करते हुए, आप अभी भी इसे डेवलपर को वापस फेंक सकते हैं, इसे एक कोड समीक्षा में बढ़ा सकते हैं या यदि आप बहुत इच्छुक हैं तो बस इसे स्वयं बदल सकते हैं।


मान लें कि कोडिंग शैली आदर्श है, और यदि ऐसा नहीं है - तो लोग इसे बदल सकते हैं। क्या इस मामले में भी लोगों को इसे अनदेखा करने की अनुमति है?
B:52овиЈ

कहना मुश्किल है - खासकर अगर समग्र सहमति नहीं है। मुझे लगता है कि डेवलपर वरिष्ठता और / या मध्यस्थता यहाँ खेल में आएगी ...
रोबी डी

0

आपका प्रश्न दो उद्धरणों को समेटने के आसपास है। मुझे लगता है कि treecoder ने आपके प्रश्न का उत्तर क्या लिखा है। यह शैली दिशानिर्देश लिखने में आपके मार्गदर्शक सिद्धांत का प्रतिनिधित्व करता है।

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

तो आप इस तरह दो विरोधाभासों को समेट सकते हैं:

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

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


0

यह बहुत ज्यादा मायने नहीं रखता है कि लोगों की कोडिंग शैली क्या है, जब तक कि उनके पास एक कोडिंग शैली है। यदि कोई कंपनी कोडिंग शैली पर जोर देती है, तो वे अपने डेवलपर्स के लगभग 49% पैर की उंगलियों पर भारी कदम रखते हैं।

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

इसका मतलब है कि एक कोडिंग स्टाइल मानक बनाना समय की भारी बर्बादी, अंतहीन तर्क का स्रोत, असीम आक्रोश का कारण और समय और ऊर्जा का एक बड़ा नाला हो सकता है।


0

मैंने कई वर्षों से कोड शैली दिशानिर्देशों के साथ हाथ मिलाया है, क्योंकि इस मंच पर कई अन्य लोग हैं। इसमें दोनों लड़ शैली गाइड शामिल हैं जो मुझे घृणित लगते हैं, और दूसरों को अपनी शैली पर लगाम लगाने के लिए शैली गाइड का उपयोग करने के लिए प्रोत्साहित करने की कोशिश कर रहा है, इसलिए यह एक पूरे के रूप में अधिक पठनीय हो सकता है।

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

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

यदि हम एक कोडिंग शैली "लागू" करते हैं, तो हम बाद में मूल्य के लिए मूल्य का त्याग करेंगे। इसे "निवेश" कहा जाएगा यदि हम आश्वस्त हो सकते हैं कि हमें अपने प्रयासों पर रिटर्न मिलेगा, लेकिन कोई भी डेवलपर जिसने खराब लिखित कोडिंग स्टाइल गाइड के साथ काम किया है, वह यह प्रमाणित कर सकता है कि उन "पठनीयता" का लाभ डेवलपर्स द्वारा विचलित करने के लिए भुगतान किया जाता है। उनके कोड से दूर। मेरे अनुभव में, बहुत कम संख्या में ऐसे मामले हैं जिनमें लागू की गई कोडिंग शैलियों में योग्यता है, आमतौर पर विशिष्ट रूप से हिमाच्छादित ग्राहकों के लिए सॉफ्टवेयर पर जहां सॉफ्टवेयर का उपयोग 30 या 40 वर्षों के लिए किया जा सकता है!

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

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

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

अगर मैं सोमवार की सुबह आता हूं, तो आपने पाया है कि हमने एक सप्ताह के लिए एक समस्या को हल कर दिया है, और आपने इसे अपने "विशेष" कोडिंग मानक में बदल दिया है, मैं आपको बताने वाला नहीं हूं। इसे ठीक करो। मैं आपको स्नान करने जा रहा हूँ। यदि आपका "विशेष" कोडिंग मानक असाधारण रूप से "विशेष" है, तो मैं एक एंट्री लेवल डेवलपर को "समीक्षा" करने का सुझाव भी दे सकता हूं कि आपका कोड कैसे काम करता है और इस बात का ज्ञान फैलाने के लिए कोड का उल्लेख है कि यदि कुछ भी पढ़ने में कठिन लगता है, तो उसे / उसे इसे साफ करें। आपने उस सप्ताह के अंत में कंपनी को पर्याप्त मूल्य प्रदान किया, जो आपके द्वारा किए गए अहंकारी कोडिंग मानकों के उल्लंघन का भी उल्लेख नहीं करने योग्य है।

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

( अस्वीकरण: मैंने पूरी तरह से एक मैनीक्योर कार्य को हल करने के लिए इस कार्यान्वयन को लिखा है is_base_of, और वरिष्ठ डेवलपर्स से इसके लिए मुझे मिला हर नरक अर्जित किया। मेरा कहना है कि यह इसके लायक था। मुझे अभी भी हर बार हंसी का एक बुलबुला बुलबुला मिलता है। देखो कि कैसे पैटर्न सी + + विनिर्देशन के 7 असंबंधित भागों की तरह एक साथ कुछ अद्भुत करने के लिए wedges। ले लो, कि आप वरिष्ठ डेवलपर्स! यह वही है जो आपको boostइस विशेष परियोजना पर मना करने के लिए मिलता है ! )


-1

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

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

सबसे खराब बात यह है कि आप कुछ कस्टम कोडिंग शैली की मांग कर सकते हैं जो मौजूदा कोड फ़ॉर्मेटर का समर्थन नहीं करता है।

अपेक्षाकृत दुर्लभ मामलों में, कुछ खंड को अलग-अलग स्वरूपित किया जा सकता है, यदि फ़ॉर्मेटर वास्तव में भयानक रूप से ऐसा करता है, लेकिन आमतौर पर सभी के लिए फ़ॉर्मेटर को बेहतर प्रारूपित करना बेहतर होता है।

यह कुछ उपयोगी नियम हो सकते हैं जो फ़ॉर्मेटर का समर्थन नहीं कर सकते हैं (उदाहरण के लिए चर का नाम कैसे दें), लेकिन यदि केवल ये ही रहते हैं, तो उनका पालन करना अपेक्षाकृत आसान होता है।


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

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

-1

वास्तविक समाधान (सिर्फ दर्शन नहीं)

यदि आप चाहें तो कोड टिप्पणियों को ओवरराइड करने और उन टिप्पणियों की सूची संकलित करने की अनुमति दें (जैसा कि अक्सर टूडू टिप्पणियों के साथ किया जाता है)

अपने डेवलपर्स को सम्मेलन के बाहर काम करने की क्षमता स्पष्ट रूप से और तर्क के साथ दें - और मनुष्यों द्वारा कोड समीक्षा के दौरान इसकी आवश्यकतानुसार जांच की जा सकती है।

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