एक असंभावित किनारे मामले के बारे में मैं एक कोड समीक्षा में असहमति को कैसे संभाल सकता हूं?


188

मैं एक पथ कवरेज टीम पर एक रोबोटिक्स स्टार्टअप में काम कर रहा हूं और एक पुल अनुरोध सबमिट करने के बाद, मेरे कोड की समीक्षा की जाती है।

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

मैं एक उदाहरण प्रदान करूंगा:

मैंने एक दिन एक संक्रमण खोज एल्गोरिथ्म में बदलाव के लिए परीक्षण मामलों को लिखा था जो मैंने बनाया था। उन्होंने सुझाव दिया था कि मैं एक अस्पष्ट मामले को संभालता हूं जो कि होने की संभावना नहीं है - वास्तव में मुझे यकीन नहीं है कि ऐसा होना भी संभव है। जो कोड मैंने बनाया था वह हमारे सभी मूल परीक्षण मामलों में काम करता है और कुछ नए जो मुझे मिले। कोड जो मैंने पहले ही बनाया था वह हमारे 300+ सिमुलेशन से गुजरता है जो रात में चलते हैं। हालांकि, इस अस्पष्ट मामले को संभालने में मुझे 13 घंटे लगेंगे जो कि रोबोट के प्रदर्शन को बेहतर बनाने के लिए बेहतर तरीके से खर्च किए जा सकते हैं। स्पष्ट होने के लिए, पिछले एल्गोरिथ्म जो हम अब तक उपयोग कर रहे थे, वह भी इस अस्पष्ट मामले को संभाल नहीं पाया था और एक बार नहीं, 40k रिपोर्ट में जो उत्पन्न हुए हैं, क्या यह कभी हुआ है। हम एक स्टार्टअप हैं और उत्पाद को विकसित करने की आवश्यकता है।

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


मैं अपने सहकर्मी का सम्मान करता हूं और मैं उन्हें एक बुद्धिमान प्रोग्रामर के रूप में स्वीकार करता हूं। मैं बस एक बिंदु पर उससे असहमत हूं और कोड समीक्षा में असहमति को संभालना नहीं जानता।

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


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

189
@ क्लिक "रियल इनपुट कभी भी ऐसा नहीं होगा" यह वह जगह है जहाँ आप गलत हैं। मैंने "इनपुट इस तरह कभी नहीं होगा" के कई मामलों का सामना किया है और जब यह "इस तरह से" आश्चर्यचकित था । उत्पादन के माहौल में, सभी प्रकार की अजीब चीजें हो सकती हैं। केवल यह मत सोचो कि आपका सॉफ्टवेयर कैसे काम करेगा बल्कि यह भी कैसे विफल होगा?

38
@Snowman बिंदु कोड की समीक्षा के लिए, भाग में, उन एक-में-मिलियन दोषों को पकड़ने का मतलब है जो इकाई परीक्षण और यहां तक ​​कि यादृच्छिक परीक्षण / फ़ज़िंग नहीं पाते हैं।
डेरेक एल्किंस

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

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

जवाबों:


227

एक अस्पष्ट मामला जो होने की बहुत संभावना नहीं है - वास्तव में मुझे यकीन नहीं है कि यह भी संभव है

कोड में अनुपयोगी व्यवहार न होना बहुत महत्वपूर्ण हो सकता है। यदि कोड का एक टुकड़ा चलाया जाता है जैसे कि 50 बार एक सेकंड, एक मिलियन में एक मौका लगभग 5.5 घंटे के रनटाइम में होगा। (आपके मामले में, बाधाओं को कम लगता है।)

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

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

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


9
@ 9000 यह भी निराशाजनक हो सकता है जब उत्तर "क्योंकि जीवन ही ऐसा है।" उदाहरण के लिए, यह वह है जिसे मैंने हाल ही में जाना था: "टैब पर रिक्त स्थान का उपयोग करें।" "क्यों?" "क्योंकि हमारी स्टाइल गाइड कहती है।" "क्यों?" "मुझे नहीं पता; मैंने इसे नहीं लिखा।" "हा, स्पष्ट रूप से आप गलत हैं और मैं सही हूं, और मैं अपना कोड टैब से छोड़ने जा रहा हूं!" फिर एक पोस्ट-कम्ड हुक ने इसे वैसे भी बदल दिया, लेकिन फिर भी - यदि आप 5 व्हाट्स तकनीक का उपयोग करते हैं, तो तब तक जाएं जब तक कि आप एक समझदार उत्तर प्राप्त नहीं कर लेते, तब तक नहीं जब तक कि आपने दूसरे व्यक्ति को निराश नहीं किया।
निक हार्टले

111
@QPaysTaxes: हर किसी को पता होना चाहिए कि टैब (या स्पेस पर टैब) के तर्क के कारण रिक्त स्थान क्यों हैं: क्योंकि दोनों सही हैं, लेकिन संगतता अधिक महत्वपूर्ण है, इसलिए बस एक को चुनें, सुसंगत रहें और समय की बर्बादी न करें
स्लीबेटमैन

30
Not having untested behaviors in code can be very important. If a piece of code is run e.g. 50 times a second, a one in a million chance will happen approximately every 5.5 hours of runtime. (In your case, the odds seem lower.)-- क्या? नहीं, जब तक आप मोंटे-कार्लो सिमुलेशन नहीं चला रहे हैं, या आपके कोड में कुछ यादृच्छिक तत्व शामिल हैं। कंप्यूटर एक घंटी वक्र या मानक विचलन के अनुसार सॉफ़्टवेयर नहीं चलाते हैं जब तक कि आप उन्हें विशेष रूप से ऐसा करने के लिए नहीं कहते हैं।
रॉबर्ट हार्वे

10
@ रोबर्टहाइवे: दौड़ की स्थिति की तरह कुछ पर विचार करें, जो कि एक यादृच्छिक तत्व है। डेटा प्रवाहित करते समय डेटा-निर्भर बग पर भी विचार करें; हालांकि डेटा काफी यादृच्छिक नहीं हो सकता है, लेकिन जब तक यह अत्यधिक दोहराव नहीं होता है, तब तक बाइट्स का एक विशेष संयोजन बार-बार हो सकता है। एक लाख में से एक = 20 बिट्स के एक विशेष संयोजन द्वारा ट्रिगर किया गया, इस तरह एक बग तुरंत दिखाई देगा यदि वीडियो स्ट्रीम संसाधित करना; ऐसा कुछ जो शायद ही कभी होता है लेकिन नियमित रूप से शामिल हो सकता है जैसे 40 बिट।
9000

7
@ रोबर्टहाइवे: संभवतः! मैं सिर्फ यह बताना चाहता था कि एक विशेष आह्वान के तहत कोड के ऐसे टुकड़े हो सकते हैं जिनमें 1e-6 मौका (0 नहीं और 1 नहीं) हो, «अस्पष्ट मामले का जिक्र करते हुए, जो होने की संभावना नहीं है»। जबकि उस तरह के कीड़े आमतौर पर परीक्षणों के तहत दिखाई नहीं देते हैं , वे उत्पादन में दिखाई देते हैं
9000

323

मैं आपको एक कोने के मामले का एक उदाहरण दे सकता हूं जो कभी भी ऐसा नहीं हो सकता जो किसी आपदा का कारण बने।

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

कई वर्षों बाद एरियन 5 को विकसित किया जा रहा था और पार्श्व त्वरक को स्केल करने के लिए कोड का न्यूनतम परीक्षण के साथ पुन: उपयोग किया गया क्योंकि यह "उपयोग में सिद्ध" था। दुर्भाग्य से बड़ा रॉकेट बड़े पार्श्व त्वरणों की अपेक्षा कर सकता है इसलिए एक्सेलेरोमीटर उन्नत किए गए थे और 64-बिट फ्लोट मानों को बड़ा कर सकते थे ।

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

यहां छवि विवरण दर्ज करें

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

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

स्पष्टीकरण

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

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


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

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

11
मुझे लगता है कि वास्तविक दुनिया के उदाहरण हैं जो साबित करते हैं कि किनारे के मामलों को क्यों कवर किया जाना चाहिए, लेकिन यह उनमें से एक नहीं है। उद्धृत उदाहरण एक कार्य के लिए गलत लाइब्रेरी का उपयोग करने का मामला है । एक केले के लिए कोड को नारंगी पर नेत्रहीन रूप से उपयोग नहीं किया जाना चाहिए। यह उस व्यक्ति का दोष है जिसने एक नारंगी पर केले के कोड का उपयोग किया था, न कि उस व्यक्ति के लिए जिसने एक नारंगी के लिए कोड लिखा था जो एक केले को संभाल नहीं सका। (मुझे एक बड़ी टेक कंपनी के कारण इस सादृश्य में केले के लिए Apple को बंद करना पड़ा ...)
उत्पत्ति

51
@JoeBlow एक बग, हाँ, लेकिन एक निवारक , वह जो अतिरिक्त परीक्षण मामलों और / या कोड-समीक्षाओं के साथ पकड़ा जा सकता था। ईश्वर केवल यह जानता है कि अगर वहाँ कोई आदमी था, यह कहते हुए कि "आप लोग जानते हैं, मुझे लगता है कि हमें इस सीमा को मान्य करना चाहिए ..." और अन्य जैसे "इसके बारे में चिंता न करें ... संभवतः क्या गलत हो सकता है ... असंभव मामला? " यदि कीड़े पर्याप्त प्रमाण नहीं हैं कि हमारे तर्क में हमसे अधिक अंतराल है, तो मुझे नहीं पता कि क्या कहना है ...
code_dredd

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

84

चूंकि यह पहले संभाला नहीं गया था, इसलिए यह आपके प्रयास के दायरे से बाहर है। यदि आप इस मामले को कवर करने के प्रयास के लायक हैं तो आप या आपके सहयोगी आपके प्रबंधक से पूछ सकते हैं।


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

6
इससे पहले कि यह भी अप्रासंगिक IMO है, Wether या नहीं संभाला, यह पहले से कार्य विवरण में नहीं था।
जैस्पर एन। ब्रूवर

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

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

6
यह भयानक सलाह है! Since it wasn't handled before, it's out of the scope for your effortहर एक बग रिपोर्ट को चिह्नित करने के लिए पर्याप्त होगा wontfix, यह मानते हुए कि आपकी कल्पना इतनी बुरी थी कि यह शुरू करने के लिए पर्याप्त नहीं था, अगर यह उचित मामलों में भी नहीं था, तो आप किनारे के मामलों पर विचार नहीं करेंगे।
हगलुंड

53

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

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

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


7
आप अपने दूसरे पैराग्राफ में एक बहुत अच्छा बिंदु बनाते हैं। मैंने अनुभव किया है कि पहले, लेकिन यह बहुत उपयोगी है।
क्लीक

7
तीसरा मामला = बिंगो। मैं ज्यादातर विरासत कोड में काम करता हूं, और ऐसी परियोजनाएं हैं जहां 80% काम सिर्फ उन स्थानों को ठीक करना है जो धारणाएं बनाते हैं। मुझे यह उत्तर पसंद है, लेकिन मैं यह जोड़ना चाहूंगा कि एक सटीक और विस्तृत त्रुटि संदेश के साथ एक सुंदर विफलता की स्थापना करके इस तरह के असंभव किनारे मामले को कवर करना कभी-कभी ठीक है, खासकर जब आप एक समय की कमी में होते हैं।
जेतुनर्ज

मुझे ऐसे अपवादों को लॉग इन करना पसंद है जो "[त्रुटि विवरण] विनिर्देशन [संस्करण] के अनुसार [जिस व्यक्ति ने इसे हस्ताक्षरित किया है] ने इसे बंद कर दिया है। ऐसा नहीं हो सकता।"
पीटर फॉन

लेकिन चूंकि इससे पहले इसके लिए कोई परीक्षण मामला नहीं था, इसलिए कोड (मान को पहले की जगह लेना था) को उस पुनरावृत्ति में नए परीक्षण मामलों को फिट नहीं करना चाहिए था। और अगर उस कोने के मामले के लिए पहले से ही कोई परीक्षण नहीं है, तो यह एक नया टिकट / कार्य होना चाहिए, न कि एक कोड समीक्षा प्रतिक्रिया imo।
केबी

38

यह कोई तकनीकी सवाल नहीं है बल्कि एक व्यापार रणनीति निर्णय है। आपने देखा कि सुझाव दिया गया फिक्स एक बहुत ही अस्पष्ट मामले के लिए है जो लगभग कभी नहीं होगा। यहाँ यह एक बड़ा फर्क पड़ता है अगर आप एक खिलौना प्रोग्रामिंग कर रहे हैं या यदि आप कह रहे हैं कि चिकित्सा उपकरण या एक सशस्त्र ड्रोन है। एक दुर्लभ खराबी के परिणाम बहुत अलग होंगे।

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


5
बिल्कुल सही, किसी और से पूछें कि क्या यह कवर करने लायक है। मैं कम से कम परीक्षण के मामले को लिखूंगा और फिर इसे टिप्पणी के साथ "छोड़" के रूप में चिह्नित करूंगा कि किसी और ने निर्णय लिया कि यह लागू करने के लायक नहीं था। CYA
शॉन मैकसोमरेटिंग

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

1
"यह अजीब नहीं है, यह दांव है!"
user1068

2
यह सबसे अच्छा जवाब है। प्रश्न वास्तव में प्राथमिकताएं निर्धारित करने और जोखिमों के प्रबंधन के बारे में है।
19

मैं इस व्यावसायिक निर्णय से सहमत हूं। इसे ठीक करने के लिए आवश्यक समय के अपने अनुमान के साथ एक टिकट बनाएं, इसे अपने बॉस को सौंप दें (जो भी आपके आदेश के समय के आवंटन के लिए ज़िम्मेदार है), और इसके लिए इसे प्राथमिकता देने के लिए कहें (या खारिज कर दिया, जैसा भी मामला हो) हो सकता है)
मतिजा नलिस

21

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

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

एक अनुभवी कोडर (एक डेवलपर के रूप में 15 वर्ष से अधिक) के रूप में, मुझे अक्सर मुझसे कम वर्षों के अनुभव वाले कोडर्स द्वारा समीक्षा की जाती है। कभी-कभी वे मुझसे उन परिवर्तनों के लिए पूछते हैं, जिनसे मैं असहमत हूं या महत्वहीन हूं। हालाँकि, मैं अभी भी उन बदलावों को करता हूँ। मैं परिवर्तनों पर लड़ाई तभी लड़ता हूं जब मुझे लगता है कि अंतिम परिणाम उत्पाद में कमजोरी का कारण होगा, जहां समय लागत बहुत अधिक है, या जहां एक "सही" बिंदु को उद्देश्य बनाया जा सकता है (उदाहरण के लिए जीता जा रहा परिवर्तन) हम जिस भाषा का उपयोग कर रहे हैं उसमें t काम, या एक बेंचमार्क दर्शाता है कि दावा किया गया प्रदर्शन सुधार एक नहीं है)।

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

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


2
"इसे न्यूट्रली के रूप में पेश करें जितना आप कर सकते हैं" .. काफी। मैं नील से आगे बढ़ूंगा और सुझाव दूंगा, जैसा कि वे कहते हैं, आपको "बात करने के लिए गुस्सा" स्वैप करने की आवश्यकता है। बस तुरन्त और खुले तौर पर कहते हैं (उदाहरण के लिए, हाथ में विशिष्ट उदाहरण में), "स्टीव, आपके कोने का मामला मौजूदा यांत्रिक डिजाइन के साथ गैर-भौतिक है, क्या आपको नहीं लगता कि यार? चलो पहले यह तय करते हैं कि क्या यह गैर-भौतिक है?" और भले ही यह दो दिन बिताने लायक हो। ”
फेटी

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

@TobySpeight: मैं सहमत हूं और उत्तर में इसे शामिल करने की कोशिश की।
नील स्लेटर

1
2 घंटे अधिक है जो मैं नहीं लड़ूंगा। 2 दिन और मैं उन सभी अन्य कार्यों को पूरा करने में सक्षम नहीं होने जा रहा हूं जो मैंने सप्ताह के लिए किए हैं।
मैथ्यू पढ़ें

15

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

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

यह उत्तर स्पष्ट रूप से मानता है कि यहां तक ​​कि "यदि संभव हो तो अत्यंत असंभव" का आपका निर्णय सही है और हम इसका न्याय नहीं कर सकते हैं। लेकिन अगर यह है, और आपका सहयोगी सहमत है, तो घटना के खिलाफ एक स्पष्ट दावा आप दोनों के लिए एक संतोषजनक समाधान होना चाहिए।


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

1
अच्छा सुझाव। अच्छा कोड वह कोड होता है जो कभी भी विफल नहीं होता है, लेकिन अगर यह बेवजह विफल हो जाता है, तो एक अच्छी तरह से परिभाषित तरीके से विफल हो जाता है जिसे ठीक किया जा सकता है। कोड जो संभवतः गलत नहीं हो सकता है, लेकिन अगर यह गलत हो जाता है , तो इसे प्राप्त करना या मरम्मत करना असंभव हो जाता है, इतना महान नहीं है ...
वामावर्तबाउट

यह, मैं एक ही बात पोस्ट करने जा रहा था। समीक्षक एक संभावित विफलता को इंगित कर रहा है, इसे कैसे संभालना है यह एक अलग सवाल है।
SH-

2
ओह, नहीं, अपने कोड में एक मुखर मत करो। यदि मुखर संकलित नहीं किया गया है, तो कोई भी इसे कभी नहीं देखेगा। यदि मुखर संकलित किया जाता है तो आपका रोबोट दुर्घटनाग्रस्त हो जाएगा। मैंने एक से अधिक मामलों को देखा है जहां उत्पादन कोड में 'कुछ ऐसा हो सकता है जो कभी नहीं हो सकता' के लिए जोर दिया गया और न केवल उस प्रणाली को बल्कि उस पर निर्भर होने वाली सभी चीजों को नीचे लाया।
टॉम टैनर

@TomTanner "एक अच्छी विफलता से निपटने के साथ, जो पहले से ही होना चाहिए"। मैं यह मान रहा हूं कि कोड पहले से ही यहां विफलताओं को संभालने में सक्षम है। जो कि अधिक खिंचाव नहीं हो सकता है, क्योंकि सुरक्षित विफलता रणनीतियों को किसी भी भौतिक प्रणाली का हिस्सा होना चाहिए।
वर्ल्डसींडर

13

जब से आप वहां नए लग रहे हैं, केवल एक चीज है जो आप कर सकते हैं - टीम लीडर (या प्रोजेक्ट लीडर) के साथ जांच करें। 13 घंटे एक व्यावसायिक निर्णय है; कुछ फर्मों / टीमों के लिए, बहुत कुछ; कुछ के लिए, कुछ नहीं। यह आपका निर्णय नहीं है, अभी तक नहीं।

यदि लीड कहती है कि "उस मामले को कवर करें", ठीक; अगर वह कहता है, "नहीं, यह पेंच", ठीक है - उसका निर्णय, उसकी जिम्मेदारी।

सामान्य रूप से कोड समीक्षाओं के लिए, इसके बारे में आराम करें। एक या दो बार आपके पास लौटाया गया कार्य पूरी तरह से सामान्य है।


7

एक बात मुझे नहीं लगती कि मैंने इस तरह से संबोधित किया है, हालांकि यह @SteveBarnes जवाब में लाया गया था:

एक विफलता के नतीजे क्या हैं?

कुछ क्षेत्रों में एक विफलता एक वेब पेज पर एक त्रुटि है। एक पीसी ब्लू स्क्रीन और रिबूट।

अन्य क्षेत्रों में यह जीवन या मृत्यु है - सेल्फ ड्राइविंग कार लॉक। मेडिकल पेस मेकर काम करना बंद कर देता है। या स्टीव के उत्तर में: लाखों डॉलर का नुकसान होने के कारण सामान उड़ गया।

वहाँ एक है दुनिया उन चरम सीमाओं में अंतर का।

"विफलता" को कवर करने के लिए 13 घंटे का मूल्य है या नहीं, आखिरकार आप पर निर्भर होना चाहिए। यह प्रबंधन और मालिकों तक होना चाहिए। अधिक से अधिक चित्र के लिए उनके पास एक भावना होनी चाहिए।

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

THAT प्रश्न का उत्तर "यह कंपनियों के समय के 13 घंटे के लायक है" का उत्तर देना चाहिए। सूचना: मैंने कहा कि कंपनियों का समय। वे बिलों का भुगतान करते हैं और अंततः तय करते हैं कि इसके लायक क्या है। आपके प्रबंधन को अंतिम कहना चाहिए।


1
इसके अलावा, एक ज्ञात दोष की देयता प्रतिपूर्ति क्या है जो तय नहीं है, भले ही अस्पष्ट हो?
chux

5

शायद उस व्यक्ति से बात करें जो काम को प्राथमिकता देने के लिए जिम्मेदार है? स्टार्टअप में सीटीओ या उत्पाद का मालिक हो सकता है। वह यह पता लगाने में मदद कर सकता है कि क्या इस अतिरिक्त काम की आवश्यकता है और क्यों। इसके अलावा आप दैनिक स्टैंडअप के दौरान अपनी चिंताओं को ला सकते हैं (यदि आपके पास है)।

यदि कार्य योजना के लिए कोई स्पष्ट जिम्मेदारी (जैसे उत्पाद स्वामी) नहीं है, तो अपने आसपास के लोगों से बात करने का प्रयास करें। बाद में यह एक मुद्दा बन सकता है कि हर कोई उत्पाद को विपरीत दिशा में धकेल रहा है।


5

असहमति को संभालने का सबसे अच्छा तरीका वही है, भले ही आप एक जूनियर डेवलपर या एक वरिष्ठ डेवलपर या यहां तक ​​कि एक सीईओ हों।

Columbo की तरह कार्य करें

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

मुझे लगता है कि यह सुकराती पद्धति से भी संबंधित है ।


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

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

आप इस धारणा के तहत हैं कि अन्य सुविधाओं के विकास के पक्ष में संभावित (असंभव?) मामले के लिए कोड कवरेज पर कंजूसी करना सबसे अच्छा तरीका है।

आपका सहकर्मी इस धारणा के तहत है कि कोने के मामलों के बारे में अधिक सावधान रहना अधिक मूल्यवान है।

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

जैसा कि आप अपनी मान्यताओं और अपने निष्कर्षों पर सवाल उठाते हैं, आप नीचे खुदाई करेंगे, पूर्वाग्रह को उजागर करेंगे, और अंततः यह पता लगाएंगे कि कार्रवाई का सही तरीका क्या है।

इस धारणा के साथ शुरू करें कि आपकी टीम के सभी लोग पूरी तरह से तर्कसंगत हैं और उनके पास आपकी तरह ही टीम और उत्पाद के सर्वोत्तम हित हैं। यदि वे कुछ ऐसा कर रहे हैं जो समझ में नहीं आता है, तो आपको यह पता लगाने की आवश्यकता है कि आप क्या नहीं जानते कि वे करते हैं, या आप जानते हैं कि वे नहीं करते हैं।


3

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

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

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

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


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

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

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

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

यह भी ध्यान दें कि मेरी टिप्पणी नेतृत्व या सलाहकार स्तर पर संक्रमण के इच्छुक लोगों के लिए है। कंपनियां विशेष रूप से मेरी राय के लिए मुझे किराया देती हैं।

3

कोड समीक्षा कई उद्देश्यों को पूरा करती है। एक आप स्पष्ट रूप से जानते हैं, " क्या यह कोड उद्देश्य के लिए उपयुक्त है? " दूसरे शब्दों में, क्या यह कार्यात्मक रूप से सही है; क्या यह पर्याप्त रूप से परीक्षण किया गया है; गैर-स्पष्ट भागों को उचित रूप से टिप्पणी की जाती है; क्या यह परियोजना के सम्मेलनों के अनुरूप है?

कोड की समीक्षा का एक और हिस्सा सिस्टम के बारे में ज्ञान साझा करना है। यह लेखक और समीक्षक दोनों के लिए एक मौका है कि वे बदले हुए कोड के बारे में जानें और यह बाकी सिस्टम के साथ कैसे इंटरैक्ट करता है।

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

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

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

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


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


अंत में, कोड समीक्षा के मूल्य पर एक सामान्य टिप्पणी के रूप में (और मैंने जो ऊपर कहा है, उसके एक संक्षिप्त सारांश के रूप में), मुझे यह कथन पसंद है, मेंटेनर डैनियल वेटर द्वारा मत देना :

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


3

कोड हमेशा बेहतर हो सकता है।

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

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

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

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

इसे ठीक कैसे कर सकते हैं? खैर, आपको प्रबंधक से आपको एक डीओडी देने के लिए कहें और आपको बताएं कि क्या आपको हमेशा सभी टिप्पणियों को लागू करना है। यदि विचाराधीन व्यक्ति आपका प्रबंधक है तो इसका उत्तर स्वतः स्पष्ट है।


3

यह सवाल रक्षात्मक प्रोग्रामिंग के गुणों, कोने के मामलों के खतरों या भौतिक उत्पादों में बगों के भयावह जोखिमों के बारे में नहीं है। वास्तव में यह वास्तव में सॉफ्टवेयर इंजीनियरिंग के बारे में बिल्कुल भी नहीं है

यह वास्तव में क्या है कि एक जूनियर व्यवसायी एक वरिष्ठ चिकित्सक से एक निर्देश को कैसे संभालता है जब जूनियर सहमत नहीं हो सकता है या इसकी सराहना नहीं कर सकता है।

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

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

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

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


2

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

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

उन्होंने सुझाव दिया था कि मैं एक अस्पष्ट मामले को संभालता हूं जो होने की संभावना नहीं है

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


2

आपकी कोड समीक्षा की व्यावसायिक उपयोगिता बढ़ाने के लिए कोड समीक्षकों को सुझाव (आप ओपी को इस तरह के बदलाव का प्रस्ताव देना चाहिए):

  • अपनी टिप्पणियाँ नीचे लिखें। "क्रिटिकल" / "मस्ट-डू" / "वैकल्पिक" / "सुझाए गए सुधार" / "अच्छा है" / "मैं मस्किंग कर रहा हूं"।

    यदि यह सीडीओ / गुदा / जटिल लगता है, तो कम से कम 2 स्तरों का उपयोग करें: "समीक्षा पास करने के लिए ठीक करना चाहिए और अपने परिवर्तन को मर्ज करने की अनुमति दी जानी चाहिए" / "अन्य सभी"।

कोड समीक्षा सुझावों को संभालने के लिए सुझाव जो बनाने के लिए कम महत्वपूर्ण लगते हैं:

  • अपनी पसंद की टिकटिंग प्रणाली में एक खुला टिकट बनाएं (आपकी टीम सुझाव का उपयोग करते हुए, उम्मीद से?) का उपयोग करती है

  • कोड समीक्षा आइटम के लिए एक प्रतिक्रिया टिप्पणी के रूप में टिकट # रखो अगर आपकी प्रक्रिया Fisheye या ईमेल की समीक्षा की टिप्पणियों की प्रतिक्रिया की अनुमति देती है।

  • समीक्षक तक पहुंचें और स्पष्ट रूप से पूछें कि क्या वह आइटम "ठीक होना चाहिए या विलय नहीं किया जाएगा" जारी किया गया है।

    • यदि उत्तर "हां" है, लेकिन आप असहमत हैं, तो परियोजना प्रबंधन (पीएम, आपके प्रबंधक, आदि ...) के लिए जिम्मेदार व्यक्ति को निर्णय लेने दें - असहमति को पूरी तरह और ईमानदारी से पेश करें। यह आपके बारे में नहीं है कि आप "सही" हैं, लेकिन इस परियोजना के लिए बेहतर क्या है, इसलिए पीएम / प्रबंधक की नौकरी।

अब, उस टिकट को किसी अन्य विकास अनुरोध के रूप में समझो।

  1. यदि यह वृद्धि के बाद तत्काल होने का निर्णय लिया गया है, तो इसे किसी भी जरूरी देव अनुरोध के रूप में मानें। इस पर अन्य काम और काम को चित्रित करें।

  2. अन्यथा, प्राथमिकता के अनुसार इस पर काम किया गया था और इसका आरओआई (जो आपके व्यवसाय की रेखा के आधार पर भिन्न हो सकता है जैसा कि अन्य उत्तरों में बताया गया है)।


2

आपको इसे प्रबंधन में नहीं बढ़ाना चाहिए ।

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

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

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

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


दुर्भाग्य से जब आप अच्छी तरह से शुरू करते हैं तो आपकी सिफारिश बहुत खराब होती है।
जोशुआ

1

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

यदि आपको लगता है कि कुछ गलत है और आप अपने क्षेत्र में अपेक्षाकृत विशेषज्ञ हैं तो संभावना अधिक है कि आप सही हैं

यहां कुछ कथन दिए गए हैं जो आपके लिए उपयोगी हो सकते हैं:

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

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

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

सामान्य तौर पर निम्नलिखित दोनों से बचने की कोशिश करें:

  • आप वह नहीं कर रहे हैं जो अनुरोध किया गया है
  • आप अपने समीक्षक को गूंगा महसूस कराते हैं

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


-1

जब गुंजाइश के बारे में कोड समीक्षा के दौरान असहमति होती है:

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

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


इस कुछ भी पर्याप्त पेशकश करने के लिए अंक बनाया और में पहले 20 जवाब में विस्तार से बताया नहीं लगता है
कुटकी

-1

यदि आप किनारे के मामले को असंभव साबित नहीं कर सकते हैं, तो आपको यह संभव होना चाहिए। यदि यह संभव है, तो यह अपरिहार्य है कि यह अंततः होगा, और बाद में होने के बजाय जल्द ही। यदि परीक्षण में किनारे का मामला नहीं हुआ है, तो यह संकेत हो सकता है कि परीक्षण कवरेज अधूरा है।

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

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

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

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


इससे पहले किए गए 21 से अधिक अंकों के बारे में कुछ भी समझ में नहीं आता है और पहले के 21 जवाबों में समझाया गया है
gnat

-2

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

कोड समीक्षक हैं जिन्हें दूसरों के लिए बेकार काम बनाकर अपने अस्तित्व को सही ठहराने की जरूरत है।

कौन सा वह है जो आपको तय करना है, और दूसरे प्रकार को कैसे संभालना है यह कार्यस्थल के लिए एक सवाल है ।stackexchange।

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


6
उपयोगी सलाह के लिए यह बहुत अस्पष्ट और भावनात्मक है।
रॉबर्ट हार्वे

एससीआरयूएम के बारे में टिप्पणी पूरी तरह से सही है, जूट बैकलॉग में एक नया कार्य करता है। अपने उत्तर की कठोर शुरुआत निकालें और आपको सकारात्मक अंक प्राप्त होंगे।
xmedeko
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.