मैं कैसे कोड का चयन करूं?


14

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

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

यहाँ कुछ कारक हैं जो मुझे लगता है कि पसंद को प्रभावित कर सकते हैं:

  • भाषा: सी, जावा, एसक्यूएल, पीएल / एसक्यूएल
  • कोड आयु: नया कोड बनाम पुराना कोड
  • कोड का उपयोग: अक्सर इस्तेमाल किया कोड बनाम (प्रभावी रूप से) मृत / थोड़ा इस्तेमाल किया कोड
  • कोड महत्व: महत्वपूर्ण कोड बनाम गैर-महत्वपूर्ण कोड
  • डेवलपर: जूनियर डेवलपर कोड बनाम वरिष्ठ डेवलपर कोड

मैं समझता हूं कि यह एक निश्चित निश्चित उत्तर वाला प्रश्न नहीं है, लेकिन कोई भी मार्गदर्शन उपयोगी होगा।

कुछ परिधीय संबंधित प्रश्न:

जवाबों:


12

सामान्य तौर पर, आपको हर चीज की समीक्षा करनी चाहिए । यदि किसी नए एप्लिकेशन में 2 000 LOC हैं, तो सभी 2 000 LOC की समीक्षा की जानी चाहिए।

यही कारण है कि कैसे चयन करने के लिए पर कोई सबसे अच्छा अभ्यास है कि क्या समीक्षा करने के लिए।

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

  • कोडबेस पर (अलग घटकों के एक सेट की तुलना में एक एकल अखंड कोड को फिर से लिखना / समीक्षा करना अधिक कठिन होगा),

  • आपका संदर्भ (क्या आप जो कुछ भी काम करते हैं उस पर रोक लगा सकते हैं और तीन महीने (तीन साल?) केवल फिर से लिखने / समीक्षा करने पर काम कर सकते हैं, या आपको इसे छोटे-छोटे चरणों द्वारा ही करना चाहिए, केवल जब आपके पास खाली समय हो)?

  • आप किस प्रकार की समीक्षा करते हैं (क्या आपके पास समीक्षा के लिए चीजों की एक चेकलिस्ट है? चेकलिस्ट की वस्तुओं के आधार पर, आप पहले कुछ हिस्सों की समीक्षा करना चाहते हैं) कर सकते हैं।

अगर में तुम होता तो में:

  • 80% -20% सिद्धांत का पालन करें, जिस दूसरे प्रश्न से आप जुड़े हैं, उसकी पहली टिप्पणी में उल्लेख किया गया है।

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

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

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


यदि आप ठीक से टीडीडी करते हैं, तो 100% कवरेज न केवल आसान है, यह अपरिहार्य भी है, और वास्तव में वास्तव में बहुत कम बार निकलता है।
जोनाथन हार्टले

4

कोड में किए गए सभी परिवर्तनों की समीक्षा करके प्रारंभ करें; यह समस्या को बदतर होने से रोक देगा। फिर परिवर्तनों की आवृत्ति के आधार पर कोड की समीक्षा करना शुरू करें; ये 'समस्या' क्षेत्र होंगे।

आप कोड के एक भाग की समीक्षा करने के लिए कुछ तरीकों का पता लगाना चाहेंगे ताकि आप अन्य चिंताओं के सापेक्ष अपने कोड की समीक्षा कवरेज का विश्लेषण कर सकें।

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


3

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

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

यदि आप अथक रूप से रिफ्लेक्टर करते हैं तो कोड समीक्षा उपयोगी हो जाती है। अन्यथा यह समय की बर्बादी है।

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

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


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

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

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

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

2
@gbjananb आपने बिना कोड वाले कोड को उत्पादन में जाने दिया? वाह। यह आपके डेवलपर्स पर भरोसा नहीं करने के बारे में है (आप किसी को अपने किसी साथी को कोड्स की समीक्षा करने के लिए प्राप्त कर सकते हैं), यह स्पष्ट रूप से स्पष्ट गलतियों को खोजने के बारे में है
रोब

2

सभी नए कोड की समीक्षा करके, और मौजूदा कोड में संशोधन करके शुरू करें।

मौजूदा कोड में संशोधनों की समीक्षा करते समय, डेवलपर को बॉयस्काउट नियम का पालन करना चाहिए। कोड को उससे बेहतर पाया जो उसने पाया।

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

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

10 साल पहले लिखे गए कोड की समीक्षा करना, इसकी समीक्षा के लिए, व्यर्थ है, डेवलपर को उन 10 वर्षों में सुधार करना चाहिए था। तो, यह कोई समीक्षा नहीं है कि यह जानने के लिए कि आप सभी क्या जानते हैं।

कोड समीक्षाओं का उद्देश्य उन गलतियों को सुधारना और सुधारना है जो आप वर्तमान में कर रहे हैं और उस ज्ञान को टीम के बीच साझा करना चाहते हैं।


+1 के लिए "कोड को उसके द्वारा पाए जाने से बेहतर छोड़ दें।" मैं हमेशा इसे प्रोत्साहित करने की कोशिश करता हूं। इसके लिए 10 साल पुराने कोड की समीक्षा करने के लिए, मैं आपके कहे अनुसार सहमत हूं। लेकिन क्या टीम को समीक्षा करने के विचार से अधिक आरामदायक बनाने के लिए ऐसा करने में शायद कुछ लाभ है? लोगों को कोड पर रक्षात्मक होने का बहुत खतरा नहीं है जो उन्होंने नहीं लिखा (या इतना पुराना है कि वे भूल गए हैं कि उन्होंने इसे लिखा है।)
बुरहान अली

1

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

हम इस उद्देश्य के लिए JIRA + SVN के साथ एकीकृत क्रूसिबल कोड समीक्षा के साथ एटलसियन फिशएई विश्लेषण का उपयोग करते हैं ।

जब डेवलपर एक विशिष्ट कहानी के लिए कोड की जांच करता है तो वह FishEye में एक नई कोड समीक्षा बनाता है, जहां वह समीक्षा करने के लिए टीम के अन्य सदस्यों का चयन करता है।

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

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

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

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