किसी व्यक्ति की समीक्षा में ग्रेडिंग सबसे सफल प्रणालियों के लिए काउंटर है, जिनके साथ मैंने काम किया है, शायद सभी। लेकिन 20 से अधिक वर्षों तक मैं जिस लक्ष्य तक पहुँचने की कोशिश कर रहा हूं, वह कम बग्स और बढ़ी हुई उत्पादकता प्रति इंजीनियर-घंटे है। यदि व्यक्तियों को ग्रेडिंग करना एक लक्ष्य है, तो मुझे लगता है कि समीक्षाओं का उपयोग किया जा सकता है। मैंने कभी ऐसी स्थिति नहीं देखी, जहां एक कार्यकर्ता या एक नेता के रूप में इसकी आवश्यकता थी।
कुछ वस्तुनिष्ठ अध्ययन (फगन, इत्यादि) और बहुत सारे प्रचलित ज्ञान बताते हैं कि सहकर्मी संबंध कोड की समीक्षा करते हैं, जिसका उद्देश्य बग को कम करना और उत्पादकता बढ़ाना है। कामकाजी प्रबंधक श्रमिकों के रूप में भाग ले सकते हैं, लेकिन प्रबंधकों के रूप में नहीं। चर्चा के बिंदु नोट किए गए हैं, समीक्षकों को संतुष्ट करने के लिए बदलाव आम तौर पर एक अच्छी बात है लेकिन इसकी आवश्यकता नहीं है। इसलिए सहकर्मी संबंध।
कोई भी स्वचालित उपकरण जो आगे के विश्लेषण या निर्णय के बिना स्वीकार किया जा सकता है - सी, सी ++, जावा में एक प्रकार का वृक्ष है। नियमित संकलन। संकलक वास्तव में findng संकलक कीड़े में अच्छे हैं। स्वचालित चेकों में विचलन का दस्तावेजीकरण स्वचालित चेकों के एक सूक्ष्म अभियोग जैसा लगता है। कोड निर्देश (जैसे जावा करता है) जो विचलन की अनुमति देते हैं, वे बहुत खतरनाक हैं, IMHO। डिबगिंग के लिए बढ़िया है, आपको मामले का दिल पाने के लिए, जल्दी से। एक खराब दस्तावेज में खोजने के लिए इतना अच्छा नहीं है, कोड के 50,000 गैर-टिप्पणी-लाइन ब्लॉक आपके लिए ज़िम्मेदार बन गए हैं।
कुछ नियम बेवकूफ हैं लेकिन लागू करना आसान है; उदाहरण के लिए, अप्राप्य होने पर भी हर स्विच स्टेटमेंट के लिए चूक। फिर यह सिर्फ एक चेक बॉक्स है, और आपको उन मूल्यों के साथ समय और धन परीक्षण करने की आवश्यकता नहीं है जो कुछ भी मेल नहीं खाते हैं। यदि आपके पास नियम हैं , तो आपके पास मूर्खता होगी , वे अटूट रूप से जुड़े हुए हैं । किसी भी नियम का लाभ उस मूर्खता के लायक होना चाहिए, जिसकी कीमत नियमित अंतराल पर जाँची जानी चाहिए।
दूसरी ओर, "यह चलता है" समीक्षा से पहले कोई पुण्य नहीं है, या समीक्षा में बचाव नहीं है। यदि विकास ने जलप्रपात के मॉडल का पालन किया है , तो आप कोडिंग 85% पूर्ण होने पर समीक्षा करना चाहेंगे, इससे पहले कि जटिल त्रुटियां मिली और काम किया गया, क्योंकि समीक्षा उन्हें खोजने का एक सस्ता तरीका है। चूंकि वास्तविक जीवन झरना मॉडल नहीं है, जब समीक्षा करना कुछ हद तक एक कला है और एक सामाजिक आदर्श की मात्रा है। जो लोग वास्तव में आपके कोड को पढ़ेंगे और उसमें समस्याओं की तलाश करेंगे वे ठोस सोने के हैं। प्रबंधन जो ऑन-गोइंग तरीके से इसका समर्थन करता है, वह मूल्य से ऊपर एक मोती है। समीक्षाएं चेकइन की तरह होनी चाहिए- जल्दी और अक्सर ।
मैंने इन चीजों को फायदेमंद पाया है:
1) कोई शैली युद्ध नहीं । जहां खुले घुंघराले ब्रेसिज़ जाते हैं, केवल किसी दिए गए फ़ाइल में स्थिरता जांच के अधीन होना चाहिए। सब एक जैसे। तब तो ठीक है। Ditto इंडेंटेशन डेप्थ ** s और ** टैब चौड़ाई । अधिकांश संगठनों को पता चलता है कि उन्हें टैब के लिए एक सामान्य मानक की आवश्यकता होती है, जिसका उपयोग बड़े स्थान के रूप में किया जाता है।
2) `प्रचंड
looking
पाठ जो नहीं करता है
line up is hard to read
सामग्री के लिए। `
BTW, K & R पांच (FIVE) रिक्त स्थान, इसलिए प्राधिकरण के लिए अपील बेकार हैं। बस संगत हो।
3) समीक्षा की जाने वाली फ़ाइल की एक लाइन-संख्याबद्ध, अपरिवर्तनीय, सार्वजनिक रूप से उपलब्ध प्रतिलिपि को समीक्षा से पहले 72 घंटे या उससे अधिक के लिए इंगित किया जाना चाहिए।
4) कोई डिज़ाइन-ऑन-द-फ्लाई। यदि कोई समस्या है, या कोई समस्या है, तो उसका स्थान नोट करें, और चलते रहें।
5) विकास पर्यावरण में सभी रास्तों से गुजरने वाला परीक्षण एक बहुत, बहुत, बहुत अच्छा विचार है। परीक्षण जिसमें बड़े पैमाने पर बाहरी डेटा, हार्डवेयर संसाधन, ग्राहक की साइट का उपयोग, आदि की आवश्यकता होती है, परीक्षण कर रहा है कि एक भाग्य लागत और पूरी तरह से नहीं होगा।
6) एक गैर- ASCII फ़ाइल प्रारूप स्वीकार्य है यदि निर्माण, प्रदर्शन, संपादन, आदि उपकरण मौजूद हैं या विकास में जल्दी पैदा होते हैं। यह मेरा एक व्यक्तिगत पूर्वाग्रह है, लेकिन एक ऐसी दुनिया में जहां प्रमुख ओएस 1 गीगाबाइट से कम रैम के साथ अपने तरीके से बाहर नहीं निकल सकता है, मुझे समझ नहीं आ रहा है कि फाइलों को कम से कम क्यों कहना चाहिए, 10 मेगाबाइट कुछ भी होना चाहिए ASCII या कुछ अन्य व्यावसायिक रूप से समर्थित प्रारूप के अलावा। ग्राफिक्स, ध्वनि, फिल्में, निष्पादन योग्य और उनके साथ जाने वाले टूल के मानक हैं। किसी वस्तु के बाइनरी प्रतिनिधित्व वाली फ़ाइल के लिए कोई बहाना नहीं है।
जारी किए गए कोड के रखरखाव, रीफैक्टरिंग या विकास के लिए, सह-श्रमिकों के एक समूह को मैंने एक दूसरे व्यक्ति द्वारा समीक्षा का इस्तेमाल किया था , एक प्रदर्शन पर बैठे और पुराने और नए के एक अलग रूप को देखते हुए, शाखा चेक-इन के प्रवेश द्वार के रूप में। मुझे यह पसंद आया, यह सस्ता, तेज, अपेक्षाकृत आसान था। जो लोग पहले से कोड नहीं पढ़ते हैं उनके लिए वॉक-थ्रू सभी के लिए शैक्षिक हो सकता है लेकिन शायद ही कभी डेवलपर के कोड में सुधार होता है।
यदि आपको भौगोलिक रूप से वितरित किया जाता है, तो किसी अन्य व्यक्ति के साथ बात करते हुए स्क्रीन पर अलग-अलग दिखना अपेक्षाकृत आसान होगा। इसमें बदलाव देखने वाले दो लोगों को शामिल किया गया है। एक बड़े समूह के लिए, जिन्होंने प्रश्न में कोड पढ़ा है, कई साइटें एक कमरे में सभी की तुलना में बहुत कठिन नहीं हैं। साझा कंप्यूटर स्क्रीन और स्क्वाक बॉक्स से जुड़े कई कमरे बहुत अच्छी तरह से काम करते हैं, IMHO। अधिक साइटों, अधिक बैठक प्रबंधन की आवश्यकता है। फैसिलिटेटर के रूप में एक प्रबंधक अपने यहाँ रख सकते हैं। उन साइटों को मतदान करते रहना याद रखें जिन पर आप नहीं हैं।
एक बिंदु पर, एक ही संगठन में स्वचालित इकाई परीक्षण था जिसका उपयोग प्रतिगमन परीक्षण के रूप में किया गया था। यह वास्तव में अच्छा था। बेशक हमने फिर प्लेटफॉर्म बदले और स्वचालित परीक्षण पीछे छूट गया। समीक्षा बेहतर है, चंचल मैनिफेस्टो के रूप में , रिश्ते प्रक्रिया या उपकरण की तुलना में अधिक महत्वपूर्ण हैं । लेकिन एक बार जब आप समीक्षा कर लेते हैं, तो स्वचालित इकाई परीक्षण / प्रतिगमन परीक्षण अच्छे सॉफ़्टवेयर बनाने में अगली सबसे महत्वपूर्ण मदद करते हैं।
यदि आप आवश्यकताओं पर परीक्षणों को आधार बना सकते हैं , तो ठीक है, जैसे कि महिला "जब हैरी मेट सैली" में कहती है , मेरे पास वह है जो उसके पास है!
सभी समीक्षाओं को कोडिंग से ऊपर के स्तर पर आवश्यकताओं और डिजाइन के मुद्दों को पकड़ने के लिए एक पार्किंग स्थल होना चाहिए। एक बार जब किसी चीज को पार्किंग स्थल से संबंधित माना जाता है, तो समीक्षा में चर्चा बंद हो जानी चाहिए।
कभी-कभी मुझे लगता है कि कोड की समीक्षा हार्डवेयर डिजाइन में योजनाबद्ध समीक्षाओं की तरह होनी चाहिए- पूरी तरह से सार्वजनिक, पूरी तरह से, ट्यूटोरियल, एक प्रक्रिया का अंत, एक प्रवेश द्वार जिसके बाद इसका निर्माण और परीक्षण किया जाता है। लेकिन योजनाबद्ध समीक्षा भारी हैं क्योंकि भौतिक वस्तुओं को बदलना महंगा है। सॉफ्टवेयर के लिए आर्किटेक्चर, इंटरफ़ेस और डॉक्यूमेंटेशन रिव्यू शायद हेवीवेट होने चाहिए। कोड अधिक तरल है। कोड की समीक्षा हल्का वजन होना चाहिए।
बहुत सारे तरीकों से, मुझे लगता है कि प्रौद्योगिकी संस्कृति और अपेक्षा के बारे में अधिक है क्योंकि यह एक विशिष्ट उपकरण के बारे में है। सभी " स्विस फैमिली रॉबिन्सन " / फ्लिंटस्टोन्स / मैकगाइवर आशुरचनाओं के बारे में सोचें जो दिल को प्रसन्न करती हैं और मन को चुनौती देती हैं। हम चाहते हैं कि हमारा सामान काम करे । इसके लिए कोई एक रास्ता नहीं है, किसी भी तरह से "खुफिया" था जो किसी भी तरह से 1960 के दशक के एआई कार्यक्रमों द्वारा अमूर्त और स्वचालित हो सकता है।