2009-03-18 17 views
5

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

जब मैं उपयोगकर्ता-दृश्यमान त्वरित स्ट्रिंग में टाइपो को ठीक करने के लिए # परिभाषा में एक-पंक्ति परिवर्तन करता हूं, "अरे, जो, मैंने 'FooBar' सही लिखा है?" आसान है। जब आप कई संबंधित कार्यों में कुछ संबंधित परिवर्तन करते हैं, तो एक कंधे की सैनिटी जांच 10-15 मिनट का काम होता है।

लेकिन नए कोड के ब्रांड की हजारों लाइनों के साथ एक नई परियोजना के बारे में क्या? ऐसा नहीं होता है कि अक्सर मैं इसके साथ सहज नहीं हूं। आप इसकी समीक्षा कैसे करते हैं? एक एक करके? बाद में प्रतिक्रिया के साथ "ऑफ़लाइन" हाथ से बंद करें और समीक्षा करें? एक समूह सेटिंग में?

विभिन्न दृष्टिकोणों के लिए, क्या लाइनों/घंटे की समीक्षा के लिए अंगूठे के कोई नियम हैं, इसलिए मैं इसके लिए अनुमति देने का समय अनुमान लगा सकता हूं?

उत्तर

7

मुझे लगता है कि से पहले कोड समीक्षा करने की अनुशंसा की जाती है, यह ब्रांड नए कोड की हजारों लाइनों तक पहुंच जाती है। उसके बाद यह समस्या हो रही है जिसकी आप सामना कर रहे हैं।

+0

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

+0

मैं मानता हूं कि प्रारंभिक समीक्षा बेहतर है। विभिन्न कारणों से, यह वह परिस्थिति नहीं है जो मैं अभी में हूं। –

1

व्यक्तिगत रूप से, जब मैं किसी अन्य प्रोग्रामर के लिए ज़िम्मेदार हूं; मैं संभावित रूप से

यह सब कुछ प्रदान कर रहा है, यह सब कुछ एक कार्यरत राज्य में है। यदि उनके परिवर्तन एक कार्यरत राज्य में नहीं हैं, तो मैं तब तक इंतजार करूंगा जब तक वे नहीं हैं।

यदि वे एक कार्यरत राज्य में बदलाव के लिए 3 दिन से अधिक समय लेते हैं ... मैं इसे एक चेतावनी ध्वज के रूप में लेता हूं जिसे जांचने की आवश्यकता होती है। यह आम तौर पर एक ही समय में बहुत अधिक परिवर्तन करने या बहुत से प्रभावों के साथ एक प्रमुख रिफैक्टरिंग की तरह कुछ आसान होता है।

+0

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

+0

@ क्रिस नेल्सन-ट्रू। अधिक समय लेने के वैध कारण हैं; जटिलता, बूट कुछ नया, जटिलता, आदि को दबाकर ... 'चेतावनी ध्वज' सिर्फ एक संकेतक है कि यह पुष्टि करने के लिए एक वैध कारण है और कुछ भी गलत नहीं है। –

0

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

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

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

0

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

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

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

कोड एक मौजूदा प्रणाली आप एक टीम के रूप में काम कर रहे हैं के लिए है, तो आप पर विचार करना चाहिए:

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

मेरा दृष्टिकोण छोटे हिस्सों में काम को विघटित करना और जितनी जल्दी हो सके परिवर्तनों की समीक्षा करना है। कई हजारों की समीक्षा करने के लिए कोड की 100-200 लाइनों की समीक्षा करना बहुत आसान है और आप बाद के कोड में किए गए किसी भी बदलाव को प्रसारित कर सकते हैं।

+0

अपघटन शायद मेरी समस्या का मुख्य कारण है। –

+0

नए कोड के साथ यह सीधे आगे होना चाहिए। मुझे हाल ही में मौजूदा कोड में कई नए वर्ग जोड़ना था और साथ ही वर्तमान कोड भी बदलना पड़ा। जहां संभव हो सके कोड की समीक्षा की गई थी क्योंकि कक्षाएं पूरी की गई थीं। यदि कक्षाएं बड़ी थीं तो हमने विधियों की समीक्षा की क्योंकि वे जोड़े गए थे। – Tony

+0

@ क्रिस, लेखक को अपघटन के साथ मदद करते हैं।जब मुझे इस तरह के एक बड़े समीक्षा पैकेज को बाहर करना होगा (पसंद के अनुसार नहीं), मैं एक सिंहावलोकन प्रदान करता हूं, कहां से शुरू करना है, किस समूह की समीक्षा की जानी चाहिए, आदि। एक समय में 10,000 लाइनों की समीक्षा करना पागल है, इसमें एक सप्ताह लग सकता है! यदि वह स्थिति है जिसमें आप हैं, तो आप कुछ समीक्षकों के बीच काम को विभाजित कर सकते हैं। – Dan

0

अपनी परियोजनाओं में आसानी से कोड की समीक्षा एकीकृत:

  • किसी भी चेक-इन से पहले कोड की समीक्षा के लिए एक अनिवार्य नियम का परिचय दें।
  • समीक्षक को चेक-इन टिप्पणी लिखें।
  • समीक्षाकर्ता को या तो औपचारिक तरीके से चेकइन में नाम दें (उदा। अपने वीसीएस में एक अनिवार्य टिप्पणी-फ़ील्ड जोड़कर) या अनौपचारिक तरीके
  • पुनर्विवाहों के लिए एक पुरस्कार सोचें, उदा। कुछ स्कोरिंग सिस्टम जैसे SO :-) (गंभीरता से, अन्यथा कोई भी ऐसा नहीं करेगा)
0

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

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

संबंधित मुद्दे