कैसे एक अनुरोध में एक TODO को संभालने के लिए?


24

जब मैं एक पुल अनुरोध में परिवर्तन की समीक्षा करता हूं, तो मैं कभी-कभी "TODO" नोट के साथ एक टिप्पणी पर रोक लगा देता हूं जो विभिन्न कारणों से हो सकता है, हमारे मामले में ज्यादातर इस कारण से है:

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

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


यदि आपकी टीम के लिए पूर्ववत TODOs एक समस्या बन रहे हैं, तो क्या आप किसी को असाइन नहीं कर सकते हैं (या, यदि आपके पास उस अधिकार की कमी है, तो अपने बॉस को किसी को असाइन करने के लिए कहें) अपने सभी कोड के माध्यम से जाने और सभी TODOs करने के लिए कुछ समय बिताने के लिए?
nic012000

एक महत्वपूर्ण कारक यह है कि क्या विशेष TODO प्रकृति का है जो लेखक के अलावा अन्य डेवलपर्स द्वारा हल किया जा सकता है। एक अन्य कारक है कि TODO के जोखिम या प्रासंगिकता का व्यावहारिक रूप से आकलन करना - क्या यह सिर्फ भेड़िया रो रहा है?
रवांग

आपके कोड आधार में कुछ TODO होने से कोई समस्या नहीं है।
ओलिवर वाटकिंस

जवाबों:


26

जब आप कहते हैं कि वे "आम तौर पर आपकी टीम / विभाग / संगठन में कोडबेस के जीवनकाल के लिए कोडबेस में रहते हैं", तो निम्नलिखित पर विचार करें:

  • यह अपने में लिखें नीचे DoD कि TODO, FIXME, या इसी तरह टैग बचा जाना चाहिए।
  • स्वचालित रूप से बिल्ड अस्थिर को चिह्नित करने के लिए सोनारक्यूब जैसे स्थिर कोड विश्लेषण टूल का उपयोग करें ।
  • अस्थायी रूप से उन्हें अनुमति दें यदि, और केवल तभी, आपके समस्या ट्रैकर में संबंधित टिकट है। फिर, कोड की तरह लग सकता हैTODO [ID-123] Description ...

जैसा कि मेरी टिप्पणी में उल्लेख किया गया है , अंतिम कथन शायद केवल ऐसे वातावरण में समझ में आता है जो टिकटों को सड़ने नहीं देता (जैसे कि यदि आप शून्य बग नीति का पालन करते हैं )।

व्यक्तिगत रूप से, मुझे लगता है कि TODOरों हैं कभी कभी उचित है, लेकिन उन्हें जरूरत से ज्यादा प्रयोग नहीं करना चाहिए। रॉबर्ट सी। मार्टिन के "क्लीन कोड: ए हैंडबुक ऑफ एजाइल सॉफ्टवेयर क्राफ्ट्समैनशिप" से लिया गया (पृष्ठ 59)।

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


2
क्या टिकटिंग टिकट हमेशा बैकलॉग में नहीं रहेगा? मैंने TODO और टिकट दोनों को हमेशा के लिए अनसुलझा छोड़ दिया है।
dzieciou

5
@dzieciou जरूरी नहीं है, लेकिन, निश्चित रूप से, एक जोखिम है कि यह हमेशा के लिए वहां भी रहेगा। हालांकि, यदि आपके पास टिकट है, तो यह जोखिम केवल एक कोड टिप्पणी की तुलना में कम है। मुझे लगता है कि यह टीम / विभाग / संगठन पर निर्भर करता है कि क्या यह समझ में आता है।

13
यदि आपके पास एक नो-टूडू पॉलिसी है, तो डेवलपर कोड से बाहर टूडू टिप्पणी को छोड़ देगा और खराब त्वरित और गंदे कोड को बुरे विचार में छोड़ देगा।
रिबल्डएडाई

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

2
मुझे लगता है कि इसे मुद्दा ट्रैकर में जोड़ने का उल्लेख यहां महत्वपूर्ण है। यदि आप ऐसा करते हैं, तो ऐसा भी हो सकता है कि लोग आपके बारे में जाने बिना ही इसे ठीक करना शुरू कर दें। मैंने इसे एक संगठन में घटित होते देखा है; मुद्दों को सिर्फ इसलिए उठाया गया क्योंकि लोग बग्स, रिफलेक्टर कोड आदि को ठीक करना पसंद करते थे।
प्रति लूंडबर्ग

5

TODO की उनके खुद की बुराई नहीं है। मैं कभी भी अधिक नहीं जा रहा हूं, एक परत गहरी है, और हमेशा 1 मुद्दा प्रति ट्रैकर टिकट फिक्सिंग का एक बड़ा प्रशंसक हूं।

मैं अक्सर TODO या FIXME का उपयोग अपने आप को याद दिलाने के लिए करता हूं कि मुझे किसी समस्या को ठीक करने के लिए आवश्यक है या वापस आना है।

उदाहरण के लिए, मैं ऐड (ए, बी) को कॉल कर सकता हूं और ऐड पद्धति को रिफलेक्टर करने के लिए एक TODO को जोड़ सकता हूं। मैं अब ऐड मेथड पर काम नहीं करना चाहता, लेकिन मैं इसमें वापस आना चाहता हूं।

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

उनकी समस्या को देखने या नजरअंदाज नहीं करने के लिए, मैं एक ऐसी स्क्रिप्ट का उपयोग करता हूं जो सभी TODO FIXME और DEGUG लाइनों को सूचीबद्ध करता है। और यह प्रतिबद्ध संदेश के लिए जुड़ जाता है।

एक 400 लाइन कमिट मैसेज को नजरअंदाज करना मुश्किल है जो कि सभी TODO है। इसलिए लोग उन्हें ठीक करते हैं, या तो पहले से ही प्रश्न में कोड को छूते हैं या नए टिकट बनाते हैं और समस्या कोड स्टैंडअलोन को ठीक करते हैं।

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


1
मैं मानता हूं कि TODOएस प्रति बुराई नहीं है, लेकिन उनका उपयोग करना अक्सर वह होता है जो मैं शोर पर विचार करता हूं। मुझे यह भी लगता है कि एक 400 लाइन प्रतिबद्ध संदेश को आसानी से नजरअंदाज कर दिया जाता है क्योंकि लोग उस पाठ को छोड़ देते हैं। इसके अलावा, कई Git / VCS फ़्रंट (उदाहरण GitHub) वर्णों की एक निश्चित संख्या से अधिक किसी भी विषय पंक्ति को काटते हैं।
beatngu13

हां, यह मेरी बात है, लगभग 4-5 लाइनों पर लोग इसे साफ करना चाहते हैं। इसलिए वे TODO करना शुरू करते हैं। 400 लाइनें एक अतिशयोक्ति थी।
coteyr

मुझे दिलचस्पी होगी कि कैसे प्रतिबद्ध संदेश कार्यों के लिए TODOs को जोड़ने के लिए स्क्रिप्ट है।
साइमन

एक "कमिट-मेस" हुक है जिसमें आप टाई कर सकते हैं।
coteyr

1

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

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

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


1

यदि आपकी परियोजना TODOटिप्पणियों के साथ स्रोत कोड में लंबित वस्तुओं को ट्रैक करती है , तो आपको इसकी अनुमति देनी होगी।

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

हाउस रूल # 1 - मास्टर करने के लिए सभी कमिटमेंट परीक्षण के लिए तैयार होना चाहिए, क्योंकि मास्टर किसी भी चेक-इन के बाद दैनिक बनाया जाता है। उन कमिटों में आवश्यक कोई भी अतिरिक्त परीक्षण शामिल होना चाहिए।

यदि TODOटिप्पणी वहाँ है क्योंकि कोड समाप्त नहीं हुआ है, या परीक्षण समाप्त नहीं हुए हैं, या कोड किसी भी तरह से परीक्षण के लिए तैयार नहीं है, तो वह कोड एक स्थानीय प्रतिबद्ध में है, न कि पुल अनुरोध। तैयार होने पर मुझे बुलाओ।

हाउस नियम # 2 - खुले मुद्दों के बारे में सभी जानकारी मुद्दे ट्रैकर में संग्रहीत की जाती है। यह सब। नोट्स, स्क्रिबल्स, हंच, जो भी हो।

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

हाउस नियम # 3 - लंबित परियोजना कार्यों के बारे में सभी जानकारी प्राथमिकता कतार (या जो भी आपके सिस्टम का नाम है) के अंतर्गत आती है।

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

यदि TODOटिप्पणी यह ​​कहने के लिए है कि नया कोड एक लंबित कार्य को प्रभावित करेगा, या कोडबेस में कुछ और इंगित करने के लिए, जिसे देखने की जरूरत है, जिसे नए कोड को लागू करते समय खोजा गया था, तो वह जानकारी प्राथमिकता कतार में है, या तो मौजूदा कार्य या एक नए के रूप में।

हाउस नियम # 4 - सुझाव आइडिया बॉक्स (या जो कुछ भी) में हैं।

यदि TODOटिप्पणी सॉफ्टवेयर के डिजाइन या कार्यान्वयन में बदलाव का सुझाव दे रही है, तो वह जानकारी परियोजना के विचार बॉक्स, या "vNext", या "डिज़ाइन नोट्स", या जो भी आपके पास उस चीज़ के लिए है।

TODOस्रोत नियम में हाउस रूल # 5 - टिप्पणियों की अनुमति नहीं है। अवधि।

यदि आप इस नियम से चिपके रहते हैं, तो आपको किसी भी चीज़ का पालन करने की चिंता नहीं करनी होगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.