अनिवार्य कोड समीक्षा के लिए अच्छे दिशानिर्देश और अभ्यास [बंद]


11

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

  • स्पष्ट बग कमी
  • परियोजना के आसपास होने वाले परिवर्तनों के बारे में अधिक जागरूकता
  • "मुझे पता है कि कोई इसे देखने जा रहा है, इसलिए मैं आलसी नहीं रहूंगा" / चरवाहा विरोधी प्रभाव
  • / परियोजनाओं के भीतर निरंतरता बढ़ी

लेकिन हम कुछ ऐसा पेश कर रहे हैं जो वेग को कम करने के लिए जाना जाता है, और अगर गलत किया गया तो प्रतिबद्ध पाइपलाइन में एक बेवकूफ नौकरशाही कदम पैदा कर सकता है जो कुछ भी नहीं करता है लेकिन समय लेता है। जिन चीजों के बारे में मुझे चिंता है:

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

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

जवाबों:


13
  1. समीक्षा कम करें।

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

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

  2. बहुत खराब है जो कोड की समीक्षा से बचें।

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

  3. समीक्षा से पहले स्वचालित चेकर्स का उपयोग करें।

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

  4. समीक्षा करने वाले व्यक्तियों को ध्यान से चुनें।

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

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

  5. अनौपचारिक और औपचारिक समीक्षा दोनों करें।

    एक चेकलिस्ट होने से दोषों के एक सटीक सेट पर ध्यान केंद्रित करने में मदद मिलती है, नाइट पिकिंग में विकसित होने से बचा जाता है। इस चेकलिस्ट में ऐसे बिंदु हो सकते हैं जैसे:

    • एसक्यूएल इंजेक्षन,
    • किसी भाषा के बारे में गलत धारणाएँ जिससे त्रुटियाँ हो सकती हैं,
    • विशिष्ट परिस्थितियां जो त्रुटियों को जन्म दे सकती हैं, जैसे कि ऑपरेटर पूर्ववर्तीता। उदाहरण के लिए, C # में, var a = b ?? 0 + c ?? 0;किसी ऐसे व्यक्ति के लिए ठीक लग सकता है जो शून्य पर दो नगण्य संख्याओं को जोड़ना चाहता है, लेकिन ऐसा नहीं है।
    • स्मृति का बहिष्कार,
    • आलसी लोडिंग (अपने दो जोखिमों के साथ: एक ही चीज़ को एक से अधिक बार लोड करना, और उसे लोड न करना),
    • अतिप्रवाह,
    • डेटा संरचनाएं (एक हैश सेट के बजाय एक साधारण सूची जैसी त्रुटियों के साथ, उदाहरण के लिए),
    • इनपुट सत्यापन और रक्षात्मक प्रोग्रामिंग सामान्य तौर पर,
    • धागा सुरक्षा,
    • आदि।

    मैं यहां सूची को रोकता हूं, लेकिन एक सटीक लेखक के कमजोर बिंदुओं के आधार पर, सैकड़ों बिंदु हैं जो एक चेकलिस्ट में अंकित हो सकते हैं।

  6. उत्तरोत्तर चेकलिस्ट समायोजित करें।

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


-एक कोड समीक्षा चेकलिस्ट पर क्या होना चाहिए, इसके उदाहरण? - मुझे अपने लिए Google बनाने दें।
quodlibetor

@quodlibetor: मैंने कुछ उदाहरणों को शामिल करने के लिए अपने उत्तर को संपादित किया।
आर्सेनी मूरज़ेंको

2

हमारे पास लगभग एक चेकलिस्ट है:

  • मुझे कार्य विवरण दिखाएं।
  • मुझे परिणाम के माध्यम से चलो, और यह काम कर दिखाओ। विभिन्न परिदृश्यों (अमान्य इनपुट, आदि) को चलाएं।
  • मुझे पासिंग टेस्ट दिखाओ। टेस्ट कवरेज क्या है?
  • मुझे कोड दिखाएं - यही वह जगह है जहाँ हम स्पष्ट अक्षमताओं की तलाश कर रहे हैं।

काफी अच्छी तरह से काम करता है।


0

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

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

दूसरी बात यह है कि आप जितना कर सकते हैं उतना स्वचालित है!

  • सफेद स्थानों को नियंत्रित करना
  • शैली नियंत्रण सॉफ्टवेयर
  • कोड समीक्षा से पहले स्वचालित बनाता है
  • कोड समीक्षा से पहले स्वचालित परीक्षण

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

इसका बहुत कुछ आपकी प्रौद्योगिकियों पर निर्भर करता है, लेकिन आप जो भी देख सकते हैं, वह स्वचालित रूप से बेहतर होगा।

हमने यह लड़ाई अभी तक नहीं जीती है, लेकिन यह वही है जो हमने उपयोगी पाया है।


हम इस सहकर्मी-शैली को कर रहे हैं, किसी के पास परिवर्तन करने / अवरुद्ध करने की पूर्ण शक्ति नहीं है। असहमति होने पर हम समूह आम सहमति की अपील करेंगे। यह मंदी का कारण बनेगा, लेकिन साथ ही सभी के कोडिंग में सामंजस्य बढ़ाएगा।
quodlibetor
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.