जब कोड की समीक्षा अभी बहुत कठिन है तो आप क्या करते हैं?


144

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

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

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

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


91
अपने टेस्ट सूट को चलाने के बारे में सुनिश्चित करें कि आपने कुछ भी नहीं तोड़ा है?
विन्सेन्ट सावर

130
what if there is no pre-existing test suite?- एक लिखने के बारे में कैसे?
रॉबर्ट हार्वे

27
परीक्षण सूट निश्चित रूप से मदद करेगा। लेकिन सहकर्मी की समीक्षा और परीक्षण पूरक हैं। मुझे लगता है कि एक के बाद एक को बदलना अच्छा नहीं है।
क्रिस्टोफ

8
@MasonWheeler: संभवतः एक और समय के लिए एक वार्तालाप, और आप TDD का विशेष रूप से उस लेख में उल्लेख कर रहे हैं, इस धारणा का उपयोग करते हुए कि मुझे नहीं लगता कि कोई भी स्वाभिमानी TDD'er कभी भी बना देगा, लेकिन मैंने इसे दोनों तरह से किया है, और मैं इकाई परीक्षण के लाभों को स्वयं स्पष्ट मानता हूं।
रॉबर्ट हार्वे

21
Merge and hope nothing slips through?यह एक कुख्यात बुरा विचार है।
मस्त

जवाबों:


306

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

तो इस स्थिति से कैसे निपटें? पहली जगह में नहीं मिलने से शुरू करें:

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

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

  • स्वचालित परीक्षणों का एक सूट लिखें। जाहिर है।

  • व्यापक बदलाव न करें। छोटे, लक्षित परिवर्तनों की एक श्रृंखला बनाएं, जिनमें से प्रत्येक को सही देखा जा सकता है।

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


74
उद्योग में मैंने जो देखा है, "स्टॉपिंग डिगिंग" का उपयोग आमतौर पर तेजी से समाप्ति के बाद किया जाता है, जो किसी ऐसे व्यक्ति को खोजने के बाद होता है जो फावड़ा का उपयोग करने के लिए तैयार है। इस उत्तर में एक डिस्क्लेमर जोड़ना चाहिए कि नीच कोड-बंदर चपरासी को परिणामों के लिए तैयार किए बिना यह प्रयास नहीं करना चाहिए ...
ल्यूक ए। लेबर

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

14
@ जूलियाहवर्ड आप सही हैं, लेकिन फिर भी, ल्यूक का वर्णन करने वाली स्थिति आम है, खासकर उस कोड पर जो पहले से ही राजस्व पैदा कर रहा है। वास्तव में यह आप पर निर्भर है कि क्या इस पर काम करना उचित है।
ओवेन

19
@ ल्यूका.लेबर आप सही हैं। मैंने इन कंपनियों के लिए काम किया है। जो मैं आपको बता सकता हूं वह यह है कि डेथ मार्च को पूरा होने में कई साल लगेंगे, लेकिन हर महीने उत्तरोत्तर बदतर होते जाएंगे। 'कोड बंदर' हर महीने अधिक दयनीय होंगे, लेकिन बुरे प्रबंधकों को अपने कार्यों के परिणामों को महसूस करने में वर्षों लगेंगे ... यदि कभी।
जेएस।

10
@ मैट: प्रश्न की धारणा यह है कि किसी को कोड की गुणवत्ता के बारे में पर्याप्त परवाह है कि कोड की औपचारिक प्रणाली की समीक्षा की जाए, और सवाल पूछने वाले व्यक्ति को कोड की गुणवत्ता पर बड़े बदलाव के प्रभाव के बारे में चिंतित होना चाहिए। यदि हम इसके बजाय यह मानते हैं कि कोई भी कोड गुणवत्ता के बारे में परवाह नहीं करता है, तो निश्चित रूप से, कोड गुणवत्ता सुनिश्चित करने के तरीकों के बारे में मेरा जवाब लागू नहीं होता है, लेकिन यह वह प्रश्न नहीं है जो पूछा गया था!
एरिक लिपर्ट

96

एक कोड समीक्षा का प्राथमिक लक्ष्य गुणवत्ता को बढ़ाना और मजबूत कोड वितरित करना है । मजबूत, क्योंकि 4 आँखें आमतौर पर 2 की तुलना में अधिक समस्याएं होती हैं। और जो समीक्षक अतिरिक्त कोड नहीं लिखता है, उसके लिए चुनौती (संभावित रूप से गलत) मान्यताओं की संभावना अधिक होती है।

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

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

निष्कर्ष निकालने के लिए एक उद्धरण:

"यदि आप जल्दी जाना चाहते हैं, तो अकेले जाएं। यदि आप बहुत दूर जाना चाहते हैं, तो साथ जाएं"


5
वास्तव में, कल्पना करें कि अगर 'जटिल' को 'लंबे' या 'खराब स्टाइल वाले' या 'खराब दस्तावेज वाले' या किसी अन्य नकारात्मक विशेषता के साथ बदल दिया गया था, तो हम कहेंगे कि "यह समीक्षा करने का एक अच्छा कारण नहीं है - चलो उन समस्याओं को ठीक करें ताकि यह समीक्षा योग्य हो!" " और यह अलग नहीं है।
corsiKa

11
मैं यह भी जोड़ना चाहता हूं कि यदि इस समय कोड की समीक्षा नहीं की जा सकती है, तो इसे अब से 6 महीने तक बनाए नहीं रखा जा सकता है .....
corsiKa

3
@corsiKa इसके लिए 6 महीने तक इंतजार क्यों करना चाहिए?
क्रिलगर

2
@krillgar It umm ... नहीं ... यह सिर्फ एक संख्या है जिसे मैंने अपने सिर के ऊपर से हटा दिया है जब आप कोड सेट करते हैं और बीच में इसे फिर से उठाते हैं तो बीच में समय की अवधि का प्रतिनिधित्व करते हैं ... इसलिए, हाँ ...
corsiKa

16
@ क्रिलर: मैं कुछ "नया कोड" लिखता हूं, मैं इसकी जांच करता हूं, मैं दोपहर का भोजन प्राप्त करता हूं और जब मैं वापस आता हूं, तो मेरा "नया कोड" जादुई रूप से "विरासत कोड" में बदल गया है। कैसे होगा? :)
एरिक लिपर्ट

35

विरासत सॉफ्टवेयर विकास की दुनिया में आपका स्वागत है।

आपके पास कोड की हजारों, लाखों, 10s लाखों पंक्तियों की 100s हैं।

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

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

एक आदर्श दुनिया में, आपका विशाल कोड आधार वजू का परीक्षण किया जाता है। आप एक आदर्श दुनिया में नहीं रहते हैं।

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

यह, हालांकि, नई सुविधाओं का उत्पादन किए बिना ऋण का भुगतान कर रहा है। जो "मौजूदा कोड से मुनाफे को काटते हुए, अपग्रेड करने के लिए प्रोत्साहन उत्पन्न करने के लिए इसे संशोधित करते हुए" के व्यापार मामले से मेल नहीं खाता।

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

आप जो कर सकते हैं वह सावधानी से करें। आप उस कोड का कुछ हिस्सा पा सकते हैं जिसे आप वास्तव में समझते हैं, और जिसका व्यवहार और बाकी सिस्टम के साथ बातचीत अच्छी तरह से समझ में आती है। आप इसका आधुनिकीकरण कर सकते हैं, इकाई परीक्षणों को जोड़ सकते हैं और इसके व्यवहार को भी स्पष्ट कर सकते हैं।

फिर बाकी ऐप के हिस्सों को ढूंढें जो मुख्य रूप से इसके साथ बातचीत करते हैं, और एक समय में एक पर हमला करते हैं।

जैसा कि आप ऐसा करते हैं, आप सबसिस्टम में सुधार कर सकते हैं, उन विशेषताओं को जोड़ सकते हैं जो ग्राहक भुगतान करने के लिए तैयार हैं।

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

लेकिन यह आपका सवाल नहीं है। आपका सवाल है, "मैं कुछ ऐसा कर रहा हूं जो बहुत बड़ा है, और सामान तोड़ने की संभावना है, और मैं सर्वोत्तम प्रथाओं का पालन कैसे करूं?"

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

आपके पास संभवत: आपके सिर पर एक व्यवसाय का मामला लटका हुआ है, जहां आपने कुछ हितधारक से वादा किया है कि यह बड़े पैमाने पर परिवर्तन होता है। पसंद है"।

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

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

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

एक बड़ी समस्या यह है कि शायद ही निर्णय निर्माताओं और प्रोग्रामरों के साथ गठबंधन करने वाले कंपनी मालिकों के प्रोत्साहन हैं। वहाँ 'पहुंचाने' के लिए बहुत दबाव होता है, और लगभग अदृश्य (अपने वरिष्ठों को) पैदा करके ऐसा करना तकनीकी ऋण एक महान और कभी-कभी मध्यम अवधि की रणनीति है। यहां तक ​​कि अगर आपके वरिष्ठ / हितधारकों को उस ऋण को नहीं बनाकर सबसे अच्छा काम किया जाएगा ।


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

4
यह एक अच्छा जवाब है, क्योंकि जबकि कई अन्य तकनीकी अधिक सही हैं - यह वास्तविक दुनिया में ऑफसेट होता है और जबकि हम सभी एक ऐसी दुनिया में रहना चाहते हैं जहां सब कुछ अच्छी तरह से परीक्षण किया जाता है, अच्छी तरह से प्रलेखित - हम नहीं करते हैं। विरासत कोड, अजीब कार्यान्वयन, गलतफहमी, अनुचित हितधारक, खराब मौसम ..... जीवन आप पर बुरा सामान फेंक देगा और आपको इससे निपटना होगा।
एलन एस। हैंसेन

25

उन बड़ी समस्याओं को हल करें जिनके कारण कोड समीक्षा बहुत कठिन हो रही है।

जिन्हें मैंने अब तक देखा है:

  1. कोई इकाई परीक्षण सूट नहीं
  2. कॉम्प्लेक्स कोड मर्ज होता है जिसे कोडिंग कर्तव्यों के अधिक समझदार कोड संरचना और प्रतिनिधिमंडल से बचा जा सकता है
  3. अल्पविकसित वास्तुकला का स्पष्ट अभाव

15
  1. आप कोड समीक्षा को वापस भेज सकते हैं और डेवलपर से कह सकते हैं कि इसे छोटे, अधिक वृद्धिशील बदलावों में तोड़ दें और एक छोटी कोड समीक्षा प्रस्तुत करें।

  2. आप अब भी कोड की बदबू, पैटर्न और एंटी-पैटर्न, कोड स्वरूपण मानकों, ठोस सिद्धांतों आदि के लिए जांच कर सकते हैं, जरूरी कोड के हर विवरण के माध्यम से जाने के बिना।

  3. आप अभी भी उचित इनपुट सत्यापन, लॉकिंग / थ्रेड प्रबंधन, संभावित स्तरहीन अपवादों आदि के लिए विस्तृत स्तर पर सामरिक कोड निरीक्षण कर सकते हैं, बिना आवश्यक रूप से पूरे बदलाव के समग्र इरादे को समझे।

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


14

इस स्थिति में, परिवर्तनों की सुरक्षा, प्रतिगमन की अनुपस्थिति इत्यादि के सत्यापन में अत्यधिक समय लगता है।

कोड समीक्षा मुख्य रूप से शुद्धता के उद्देश्य से नहीं होनी चाहिए। वे यहाँ कोड पठनीयता, स्थिरता और टीम मानकों के पालन में सुधार करने के लिए हैं।

एक कोड समीक्षा के दौरान शुद्धता कीड़े ढूंढना उन्हें करने का एक अच्छा प्रतिफल है, लेकिन एक डेवलपर को यह सुनिश्चित करना चाहिए कि समीक्षा के लिए प्रस्तुत करने से पहले उनका कोड पूरी तरह से (गैर प्रतिगमन सहित) काम करता है

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


2
सहमत, लेकिन: कोड समीक्षाओं में वास्तव में एक 0 वां उद्देश्य होता है, जो कोड पठनीयता, रखरखाव, आदि से भी अधिक महत्वपूर्ण है। वे टीम के मानकों के बारे में टीम को शिक्षित करने के लिए हैं। भले ही कोड समीक्षा के परिणामस्वरूप कोई संपादन नहीं किया गया था, फिर भी वे अपने उद्देश्य का 75% पूरा कर चुके थे, क्योंकि समीक्षा कोड लेखक को उन समान गलतियों से बचने के लिए फिर से, बार-बार, भविष्य के लंबे जीवनकाल के दौरान शिक्षित करेगी। यह प्रोजेक्ट, और अगला ...
जोनाथन हार्टले

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

2
@ जोनाथनहार्टले: उस मामले में, एक कोड समीक्षा के लिए (शून्य से पहले) कारण डेवलपर्स को कोड लिखना है कि उन्हें कोड समीक्षा में किसी और को दिखाने में शर्म नहीं है :-)
gnasher729

ऊपर guillaume31 और gnasher729 दोनों के साथ बिल्कुल सहमत हैं।
जोनाथन हार्टले

11

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

तो आपके पास बकवास कोड (उर्फ "तकनीकी ऋण") का ढेर है। सबसे बुरी चीज जो आप कर सकते हैं वह बकवास कोड के उस ढेर को ठीक करना शुरू कर रहा है और काम खत्म नहीं कर रहा है क्योंकि इस तरह आपको बकवास कोड का एक और बड़ा ढेर मिलेगा। तो पहली बात यह है कि अपने प्रबंधन को इसे ठीक करने में खरीदने के लिए और काम खत्म करने के लिए। या तुम नहीं। उस स्थिति में आप इसे स्पर्श न करें।

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

जब आप बग में भागते हैं तो मुश्किल सा आ जाता है। आपके चूहों का घोंसला कोड कुछ मामलों में गलत काम करेगा क्योंकि चीजें बहुत भंगुर और जटिल हैं, चीजें गलत हो जाएंगी। जैसे ही आप इकाइयाँ निकालेंगे, शेष कोड स्पष्ट हो जाएगा। (मेरे पास एक मामला था, जहां कुछ रीफैक्टरिंग के बाद, एक फ़ंक्शन "if (condition1 && condition2 && condition3) क्रैश" () के साथ शुरू हुआ, जो कि रिफैक्टिंग से पहले बिल्कुल व्यवहार था, केवल स्पष्ट। मैंने तब उस लाइन को हटा दिया था :-) आप देखेंगे। अजीब और अवांछित व्यवहार स्पष्ट रूप से, इसलिए आप इसे ठीक कर सकते हैं। दूसरी ओर, यह वह जगह है जहाँ आपको मौजूदा कोड के व्यवहार को बदलना होगा , ताकि सावधानीपूर्वक काम करना पड़े)।


3
कठिन हिस्सा व्यवसाय को समझा रहा है कि, "हाँ, हम कुछ बगों को पेश करेंगे, लेकिन हम उन्हें ठीक कर देंगे और उन्हें जल्दी से ठीक कर देंगे। थोड़ा धैर्य अब आपको नई सुविधाएँ और बग फिक्स भविष्य में तेज़ी से प्राप्त करेगा।"
रबरडक

3

दुर्भाग्य से, वहाँ वास्तव में बहुत ज्यादा नहीं है आप एक और कप कॉफी पाने के अलावा कोड समीक्षा के बिंदु पर कर सकते हैं। इस मुद्दे का वास्तविक समाधान आपके द्वारा जमा किए गए तकनीकी ऋण को संबोधित करना है: नाजुक डिजाइन, परीक्षणों की कमी। उम्मीद है, आपके पास कम से कम कार्यात्मक QA है। यदि आपके पास ऐसा नहीं है, तो हमेशा कुछ चिकन हड्डियों पर प्रार्थना करना पड़ता है।


3

यदि आप छोटी गाड़ी / गैर-कार्यशील सॉफ़्टवेयर के साथ जहाज करने और बाद में इसे ठीक करने के लिए संतुष्ट नहीं हैं, तो V & V प्रयास SHOULD विकास के प्रयास से अधिक लंबा होगा!

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


1

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

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

उपकरण उपलब्ध हैं, उनका उपयोग करें! :)


1

मुझे नहीं पता कि इसका उल्लेख अभी तक क्यों नहीं किया गया है, लेकिन ये 2 सबसे महत्वपूर्ण टुकड़े हैं:

  • आप चैंजलिस्ट को कई छोटे चैंजिस्ट में विभाजित करते हैं, जिसे आप एक के बाद एक समीक्षा करते हैं। *
  • यदि एक चेंजलॉजिस्ट की समीक्षा से यह निर्णय नहीं होता है कि चैंजिस्ट अच्छा लग रहा है, तो आप स्पष्ट रूप से बदलाव को खारिज कर देंगे।

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


1

किसी भी स्पष्ट खामियों को दूर करने के लिए सबसे अच्छा एक ही कर सकते हैं और प्रयास करें (शायद यह वैसे भी सबसे अधिक कोड की समीक्षा करना चाहिए)?

कोड रिवाइज के संभावित मूल्य को कम न समझें। वे बग का पता लगाने में अच्छे हो सकते हैं:

  • उन बगों का पता लगाएं, जिनका परीक्षण करना मुश्किल है
  • उन बगों का पता लगाएं, जिन्हें परीक्षण के दौरान पहचानना / ठीक करना मुश्किल होगा

वे अन्य कारणों से भी उपयोगी हैं:

  • टीम के सदस्यों को क्रॉस-ट्रेन करने में मदद करें
  • यह सुनिश्चित करने में मदद करें कि कोड अन्य गुणवत्ता वाले मेट्रिक्स से मिलता है, उदाहरण के लिए यह सुनिश्चित करने में मदद करें कि यह समझ में आने योग्य है और न केवल बग-मुक्त है

इस स्थिति में क्या करना है?

सर्वश्रेष्ठ / आदर्श मामले में, कोड निरीक्षण पास करने का अर्थ केवल "कोई स्पष्ट बग" नहीं है: इसका मतलब है "स्पष्ट रूप से कोई बग नहीं" (हालांकि आप इसे भी परीक्षण करना चाहेंगे)।

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

इकाई परीक्षणों का कोई व्यापक सूट उपलब्ध नहीं है या इकाई परीक्षण खंडित कोड के लिए व्यवहार्य नहीं है जो बदल गया है

एकीकरण-, प्रणाली- और स्वीकृति-परीक्षणों के बारे में क्या?

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

उन्हें संभवतः ग्राहक या उपयोगकर्ताओं को उस संदेश को रिले करना चाहिए, इसलिए वे बीटा परीक्षण करते हैं (यदि वे जल्दी गोद लेने वाले हैं), या पुराने संस्करण का उपयोग तब तक करते हैं जब तक कि नया संस्करण बीटा से बाहर न हो (यदि वे नहीं हैं)।


0

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

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

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

आप स्पष्ट रूप से इस योजना से भटक गए हैं। सौभाग्य से, आप इसे पहचानते हैं। बहुत बढ़िया! वे कहते हैं कि ज्ञान आधी लड़ाई है; यदि हां, तो जागरूकता इसके आधे से अधिक है! अब एक समाधान की जरूरत है। आपके विवरण से, यह स्पष्ट है कि आप जिस कारोबारी माहौल में हैं, वह एक ऐसे बिंदु पर विकसित हुआ है जहाँ "गो कोड की समीक्षा करते हैं, यह सबसे अच्छा अभ्यास है।" इसके लिए, मैं एक प्रमुख नियम की सलाह देता हूं जिसका उपयोग मैं तब करता हूं जब यह सॉफ़्टवेयर सर्वोत्तम प्रथाओं की बात आती है:

कोई सॉफ्टवेयर विकास सबसे अच्छा अभ्यास एक व्यापार की जरूरत है।

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

तो तुम कहाँ जाते हो? बल के निशान का पालन करें। आपने बताया है कि कुछ अस्थिर कारणों से, किसी कार्य के लिए कोड समीक्षा से गुजरना अनुचित है। मेरे अनुभव में, वह कारण हमेशा अस्थायी है। यह हमेशा या तो "पर्याप्त समय नहीं" या "समय बिताने के दौरान वेतन को बनाए रखने के लिए पर्याप्त पैसा नहीं होता है।" यह व्यवसाय है; ठीक है। अगर यह आसान होता, तो हर कोई ऐसा करता। बल के निशान का ऊपर की ओर पालन करें, और उस प्रबंधन को ढूंढें जो आपको समझने में मदद करने की स्थिति में है कि कोड की समीक्षा एक विकल्प क्यों नहीं है। भाषा कठिन है, और अक्सर एक डिक्री ऊपरी प्रबंधन से नीचे गिर जाएगी और विकृत हो जाएगी। आपकी समस्या का समाधान उस विकृति में छिपा हो सकता है।

इसका उत्तर, आवश्यक रूप से, एक विशिष्ट मामला परिदृश्य है। यह अनुमान लगाने की कोशिश कर रहा है कि सिक्का उछालना प्रमुख होगा या पूंछ। सर्वोत्तम प्रथाएं इसे 100 बार फ्लिप करने के लिए कहती हैं और उम्मीद लगभग 50 सिर और 50 पूंछ होगी, लेकिन आपके पास इसे 1 बार फ्लिप करने का समय नहीं है। यह वह जगह है जहाँ आपकी स्थिति का विवरण है। क्या आप जानते हैं कि आम तौर पर एक सिक्का उसी अभिविन्यास में उतरा होगा जो उस समय के लगभग 51% से उछाला गया था? क्या आपने यह देखने के लिए समय निकाला कि सिक्का उछालने से पहले कौन सा तरीका है? इससे फर्क पड़ सकता था।

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

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

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

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

* खैर, लगभग: L4 माइक्रोकर्नल को एक स्वचालित प्रूफ सिस्टम द्वारा थोड़ी देर पहले कोड की समीक्षा मिली, जो कि एक अनुरूप C ++ कंपाइलर द्वारा संकलित होने पर, उसके कोड को प्रमाणित करता है, वही करेगा जो प्रलेखन कहता है।


2
आपका उत्तर बताता है कि 'स्वचालित प्रमाण प्रणाली' ने L4 के स्रोत कोड की स्वचालित रूप से समीक्षा की। वास्तव में इसने L4 की शुद्धता के मानव-लिखित प्रमाण की समीक्षा की। प्रमाण को पूरा होने में वर्षों लग गए। फिर भी इस प्रयास से सही कोड लिखने के तरीके के बारे में जानने के लिए बहुत कुछ है। (स्पष्ट होने के लिए, यह एक पेन-एंड-पेपर प्रमाण नहीं है, लेकिन एक मशीन-पठनीय प्रमाण है जो वास्तव में पूरे स्रोत कोड को 'आयात' करता है और इसके बारे में कारण है। ssrg.nicta.com.au/publications/nictaabbrid/3783 देखें। .pdf )
आर्टिलियस

0

जैसा कि @EricLippert अपने उत्कृष्ट उत्तर में बताते हैं, इस तरह के बदलाव पर अधिक ध्यान देने की आवश्यकता है , कम नहीं । यदि आपको लगता है कि आप जिस बदलाव पर काम कर रहे हैं, वह एक ऐसा बदलाव बनने जा रहा है, तो कुछ रणनीतियाँ हैं जो मदद कर सकती हैं:

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

0

अधिक उत्तर इस बात को संबोधित कर रहे हैं कि आप इस बिंदु पर कैसे पहुंचे। उनमें से कई स्थिति को मापने के लिए कुछ सुझाव देते हैं, लेकिन मैं अपना जवाब संक्षिप्त उत्तर देने के लिए फेंकना चाहूंगा।

जब कोड समीक्षा "बहुत कठिन हो तो क्या करें?"

  1. मुख्य लाइन कोड शाखा पर वापस जाएं
  2. आपके द्वारा रिफलेक्ट की गई कार्यक्षमता के लिए परीक्षण लिखें (जैसे कार्यात्मक परीक्षण)
  3. पास करने के लिए परीक्षण प्राप्त करें
  4. कोड को "परीक्षण के लिए कठिन" में मर्ज करें
  5. क्या परीक्षण अभी भी पास हैं?

हाँ

आप डेवलपर्स महान थे! सभी के लिए वापस बिल्लियाँ!

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

नहीं

जब तक परीक्षण पास नहीं हो जाते हैं तब तक परीक्षण कवरेज को फिर से जोड़ना और जोड़ना जारी रखें ।


7
बिल्लियों का क्या मतलब है?
JDługosz


मुझे नहीं मिला।
जुल्लुगोज़

जिम्नास्टिक प्रशिक्षक लुगाश को अपने छात्रों की बिल्लियों और कुत्तों को जब्त करने की आदत है, केवल उन्हें वापस देने पर जब छात्र ने एक शारीरिक कार्य पूरा किया है। simpsons.wikia.com/wiki/Lugash
मार्क मैकलारेन

-1

गुणा की तरह, कोड की समीक्षा शून्य पर लागू होने पर शून्य परिणाम देती है। यह ऐसे मामले में मूल्य में वृद्धि नहीं करता है, जबकि अन्य मामलों में ऐसा होता है।

जिस कोड के साथ आपको काम करने की आवश्यकता है वह बहुत ही बुरी तरह से डिज़ाइन किया गया है ताकि आगे के विकास के दौरान कोड समीक्षा प्रक्रिया से लाभ मिल सके। इसे पुन: सक्रिय करने या फिर से विकसित करने के लिए कोड समीक्षा प्रक्रिया का उपयोग करें।

यह भी हो सकता है कि कोड अभी भी सहनीय है लेकिन कार्य अच्छा नहीं है। यह बहुत व्यापक है और छोटे वेतन वृद्धि में किया जाना चाहिए था।


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