क्या आपकी कंपनी में एक कोडिंग मानक है? [बन्द है]


31

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

क्या जिस कंपनी के लिए आप काम करते हैं, उसके पास डॉक्यूमेंटेड कोडिंग मानक हैं? यदि नहीं, तो क्यों नहीं? क्या एक मानक होने से फर्क पड़ता है? क्या यह खरोंच से एक मानक लिखने के लायक है या क्या आपको अपना स्वयं के रूप में एक और मानक अपनाना चाहिए (यानी माइक्रोसॉफ्ट के मानकों को अपना बनाएं)?


इस प्रश्न में (लगभग 6 वर्ष पुराने) लिंक के साथ एक समस्या प्रतीत होती है। यहाँ पृष्ठ के अनुसार: 1code.codeplex.com , Microsoft ऑल-इन-वन कोड फ्रेमवर्क होमपेज को blogs.msdn.com/b/onecode पर माइग्रेट कर दिया गया है । मैंने MSDN ब्लॉग पृष्ठों की जांच नहीं की है कि मानक कहाँ तक पहुँचा जा सकता है (यदि है)।
केविन फेगन

जवाबों:


39

कई समस्याओं से बचने के लिए टीम के लिए प्रत्येक भाषा के लिए एक ही कोडिंग मानक रखना महत्वपूर्ण है:

  • मानकों की कमी आपके कोड को अपठनीय बना सकती है।
  • मानकों पर असहमति डेवलपर्स के बीच चेक-इन युद्धों का कारण बन सकती है।
  • एक ही कक्षा में अलग-अलग मानक देखना बेहद परेशान करने वाला हो सकता है।

मैं अंकल बॉब के मानकों के बारे में कहने के लिए बहुत बड़ा प्रशंसक हूं :

  1. पहले कुछ पुनरावृत्तियों के दौरान उन्हें विकसित होने दें।
  2. उन्हें कंपनी विशिष्ट के बजाय टीम विशिष्ट होने दें।
  3. अगर आप इससे बच सकते हैं तो उन्हें न लिखें। बल्कि, कोड को मानकों पर कब्जा करने का तरीका बताएं।
  4. अच्छा डिजाइन कानून मत करो। (उदाहरण के लिए लोगों को गोटो का उपयोग न करने के लिए कहें)
  5. सुनिश्चित करें कि सभी जानते हैं कि मानक संचार के बारे में है, और कुछ नहीं।
  6. पहले कुछ पुनरावृत्तियों के बाद, टीम को तय करने के लिए एकजुट हों।

3
अंकल बॉब को उद्धृत करने के लिए +1। और उन्हें न लिखने के सुझाव के लिए +1 (यदि मैं कर सकता था)।
वाल्टर

21
उन्हें कोई क्यों नहीं लिखता?
फिशटोस्टर

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

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

यदि मानक टीम के स्वामित्व में है, तो टीम को समय के साथ मानक विकसित करने में सक्षम होना चाहिए। यदि नहीं, तो आप या तो मानक एक व्यक्ति के विचार के साथ, या वर्तमान में इस प्रश्न में प्रलेखित किए जा रहे कुछ पुरातन सुझावों के साथ समाप्त करेंगे: प्रोग्रामर.स्टैकएक्सचेंज.
com

8

मुझे लगता है कि एक कोडिंग मानक होना आवश्यक है, भले ही यह सभी कहते हैं कि "हम 3-अंतरिक्ष इंडेंटेशन का उपयोग करते हैं और खुले-कोष्ठक अगली पंक्ति पर जाते हैं।" कुछ लाभ:

  • यह पूरे कोड-बेस के माध्यम से पढ़ना बहुत आसान बनाता है, क्योंकि फाइलों के बीच कोडिंग शैलियों के बीच स्विच करना कष्टप्रद है।
  • यह एक एकल फ़ाइल को पढ़ना आसान बनाता है, क्योंकि दो डेवलपर्स द्वारा परस्पर विरोधी शैलियों के साथ अद्यतन की गई कोई भी फ़ाइल अंततः उन शैलियों को मिश्रित कर देगी। एक फ़ाइल के माध्यम से पढ़ना जो टैब और रिक्त स्थान को मिलाता है (और बाद में इसे संपादित करना) गधे में दर्द है।
  • यह नए डेवलपर्स के लिए आसान शैली का उपयोग करना आसान बनाता है अगर एक निहित एक के बजाय एक स्पष्ट मानक है।
  • लगातार नामकरण सम्मेलनों से फ़ंक्शन / चर खोजना बहुत आसान हो जाता है। क्या यह ArraySort या array_Sort या sortTheArray या doSortArray था या ...?

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


5

मैं "हम एक एक्स शॉप हैं" से असहमत हैं इसलिए हम सभी भाषाओं में इसी तरह से अपना कोड फॉर्मेट करते हैं।

व्यक्तिगत रूप से मैंने पाया है कि अधिकांश भाषाओं की अलग-अलग स्वीकृत शैलियाँ हैं।

मैं वास्तव में कठबोली कर सकता हूं जब सी प्रोग्रामर जावा कोडिंग को सी फॉर्मेटिंग के साथ लिखते हैं। न केवल यह जावा की तरह दिखता है, बल्कि यह उन्हें यह सोचकर बेवकूफ बनाता है कि वे जावा में अन्य सी-जैसी प्रथाओं का उपयोग कर सकते हैं।

मुझे लगता है कि यदि आपके पास एक मानक है तो यह प्रति भाषा होना चाहिए


1
+1। मेरा उद्देश्य-सी मेरे PHP की तरह सभी को नहीं देखता है।
डैन रे

2

मेरे पूर्व नियोक्ता के पास एक कोडिंग मानक है। मैं औपचारिक रूप से अपने लिए एक दस्तावेज बनाने पर विचार कर रहा हूं।

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

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


1

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

लेकिन, सबसे बुरी बात यह भी है कि कोई व्यक्ति इतालवी में चर और वर्ग के नाम लिखता है, कोई अन्य अंग्रेजी में ...

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


3
आउच, मैंने कभी भी कई भाषाओं पर विचार नहीं किया ... यह मुश्किल हो गया है।
वाल्टर

1

ध्यान रखें कि यह एक कोडन मानकों दस्तावेज है जो है विशिष्ट सभी-इन-वन कोड फ्रेमवर्क के लिए।

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

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


1
हां, मैं समझता हूं कि मेरे द्वारा संदर्भित दस्तावेज़ ऑल-इन-वन कोडिंग फ्रेमवर्क के लिए विशिष्ट है, लेकिन यह उस प्रश्न के लिए उत्पत्ति है जो इसे पढ़ने से निकला था।
वाल्टर

1

कोडिंग मानक चर्चाएँ इस पर आती हैं:

  • हां, आपको उनकी आवश्यकता है, निरंतरता और स्वच्छ कोड अच्छे विकास की आधारशिला है।
  • वे लगभग सभी समान मानकों का पालन करते हैं, तब तक कोई फर्क नहीं पड़ता।
  • अपना खुद का मत लिखो, आप एक अंतहीन और दर्दनाक चर्चा में अंत कर रहे हैं। वहाँ बहुत सारे हैं जो लोकप्रिय हैं।
  • सार्वजनिक मानकों (जैसे MSDN पर ) का उपयोग करना आपको एक अज्ञेय 3 पार्टी देता है जिसके साथ बहस नहीं की जा सकती है। यदि आप उनके साथ बहस करना चाहते हैं, तो बिंदु 2 देखें।

यदि आप Visual Studio में C # में विकसित कर रहे हैं, तो StyleCop एक चांदी की गोली है। यदि आप भी ReSharper का उपयोग कर रहे हैं, तो ReSharper प्लगइन के लिए StyleCop बस कमाल है।


1

हम एक ब्लूब शॉप हैं, इसलिए हम ब्लब प्रोग्रामिंग सम्मेलनों का उपयोग करते हैं।

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

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

यदि हम कहते हैं, C या C ++ (हम सभी बहुभाषी हैं, भले ही हम ब्लब में प्रोग्राम करते हैं) में प्रोग्राम करते हैं, तो हम ज्यादातर नए कोड के लिए ब्लूब स्टाइल का उपयोग करते हैं, या ओपन सोर्स सामान के लिए, जिस प्रोजेक्ट में हम काम कर रहे हैं, उसके मानक।


1

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


1

यह लोगों की मदद कर सकता है, यह वास्तव में उपकरणों के साथ भी मदद कर सकता है:

यदि आप किसी भी प्रकार के स्वचालित कोड का उपयोग करने में सक्षम होना चाहते हैं, तो आपको वास्तव में उन नियमों को मानकीकृत करने की आवश्यकता है, जिन्हें वह उपयोग करने जा रहा है, अन्यथा आपको लगातार अपने स्वरूप को अव्यवस्थित करने वाले कई निरर्थक स्वरूपण परिवर्तन प्राप्त करने होंगे।

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

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

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