औपचारिक कोड समीक्षा करते समय एक सहायक मानसिकता क्या है


14

हमारी टीम ने हाल ही में प्रत्येक चेकइन के खिलाफ कोड समीक्षा करना शुरू किया है।

टीम लीड के रूप में मैं बहुत सारे सुझाव प्रदान करने, डेवलपर्स को परेशान करने और टीमों के आउटपुट को कम करने और कोड को जाने देने के बीच एक संतुलन खोजने की कोशिश कर रहा हूं।

क्या सुप्रसिद्ध स्रोतों से कोई सबूत, अध्ययन या मार्गदर्शन है जो एक सहायक दृष्टिकोण का सुझाव देता है?


2
पहला सवाल अपने आप से पूछें: आप कोड समीक्षाएं क्यों कर रहे हैं?
फिलिप केंडल

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

यह आपकी रुचि हो सकती है
Laiv

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

जवाबों:


15

ओवररचिंग लक्ष्यों को ध्यान में रखें: अंत में, केवल काम करने वाले सॉफ़्टवेयर मामले

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

अपनी समीक्षा के लिए एक स्पष्ट गुंजाइश निर्धारित करें

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

  • जिस तरह से आपके डेवलपर ने आवश्यकताओं को पूरा करने के लिए चुना है, उसे चुनौती न दें, जब तक कि आप निश्चित रूप से काम नहीं करेंगे (लेकिन यह पहले से ही परीक्षणों को विफल कर देना चाहिए, नहीं)?

  • खराब प्रदर्शन के लिए चुनौती न दें जब तक कि कोई उपाय न हो जो दिखाता है कि समस्या कहां है। सभी बुराईयो की जड़ समयपूर्व इष्टतमीकरण है ;-)

  • यदि आपको कोई डिज़ाइन या सॉफ़्टवेयर संरचना चुनौती देने के लिए मिलती है, तो अपने आप से पूछें कि इसे उल्टा क्यों नहीं पकड़ा गया! पहले से लिखा कोड फिर से लिखना महंगा है। यदि ऐसा होता है, तो कम से कम कोड के रूप में आपके सॉफ़्टवेयर विकास और टीमवर्क प्रथाओं की समीक्षा करने का समय है।

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

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

नेतृत्व विकसित करें: समीक्षा का मानवीय पक्ष

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

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

अन्य प्रथाओं का लाभ उठाएं

कुछ चीजें हैं जिनसे आप कोड-समीक्षा में बच सकते हैं:

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

"वर्किंग सॉफ्टवेयर"? बहुत उपयोगी नहीं है। "सही सॉफ्टवेयर" - यही मैं पसंद करता हूँ!
फ्रैंक हिलमैन

@FrankHileman वास्तव में! और उद्देश्य के लिए सटीक, विश्वसनीय, प्रयोग करने योग्य, प्रदर्शन करने वाला और फिट होना चाहिए। यह उचित रूप से "कार्य" शब्द को परिभाषित करने का एक प्रश्न है ;-)
क्रिस्टोफ़

3

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

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

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

यहाँ व्यक्तिपरक दृष्टिकोण। इस प्रश्न में वस्तुनिष्ठ दृष्टिकोण, IMO को बहुत अच्छी तरह से समझाया गया है

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

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

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


2

कॉस्मेटिक परिवर्तनों के लिए डेवलपर के कोड के साथ मेडलिंग डेवलपर को ध्वस्त कर देगा लेकिन पूर्ण परिस्थितियों में इसे करना होगा। लीड में उपयोगी कोड समीक्षा प्रदान करने और मामूली कमियों को दूर करने के लिए सीखने के बीच संतुलन का पता लगाना है । https://blog.smartbear.com/sqc/for-the-new-team-lead-the-first-six-things-you-should-know/


कॉस्मेटिक बदलावों के लिए "पूर्ण परिस्थितियाँ" क्या होती हैं?
इवान

1
जब कोडिंग दिशानिर्देशों का पालन नहीं किया गया है, तो कोड डिज़ाइन की खामियां जो मेमोरी लीक का कारण बन सकती हैं, उदाहरण हैं जब लीड को जाने नहीं दे सकते।
निशांत मेनन

आपका लिंक मृत है
ग्रीनऑनलाइन

1

ध्यान रखने योग्य कुछ बातें:

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

-4

केवल दो चीजें हैं जो मायने रखती हैं।

  1. क्या सभी आवश्यकताओं के लिए स्वचालित परीक्षण हैं?
  2. क्या वे सभी पास हैं?

बाकी सब कुछ कॉस्मेटिक है और इसे गेट के रूप में लागू करने के बजाय बीयर के बारे में तर्क दिया जाना चाहिए।

यदि आप इस दृश्य का अनुसरण करते हैं, तो यह आपको फोकस के एक संकीर्ण क्षेत्र तक सीमित करता है।

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

क्या परीक्षण अच्छे परीक्षण हैं? किसी भी तरह की चूक के मामले, क्या वे आवश्यकता को अच्छी तरह से परख रहे हैं आदि। आखिरकार: क्या आप ऐसा परीक्षण लिख सकते हैं जो मौजूदा आवश्यकता के लिए हो, लेकिन जो विफल हो जाए?


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

एक कोड की समीक्षा में? हाँ। जैसे ही आप इसके सभी व्यक्तिपरक नामकरण में आते हैं। आप एक चरम उदाहरण का चयन करते हैं, लेकिन ऐसे बहुत सारे मामले हैं जहां लोग एकल पत्र कार्यों या कंडेनस कोड का उपयोग एकल पंक्ति कार्यों में करते हैं जिसे अच्छा अभ्यास माना जाएगा
इवान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.