किसी अन्य टीम के सदस्य के कोड को फिर से लिखने के लिखित नियम [बंद]


40

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

लेकिन एक डेवलपर से कोड के पूर्ण पुनर्लेखन के बारे में क्या जो अभी भी टीम में है? क्या मुझे उससे पहले पूछना चाहिए? सबसे अच्छा अभ्यास क्या है?


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

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

9
@ ताज़ - यह बिग बॉल ऑफ़ मड ( laputan.org/mud ) पैटर्न की नींव है ।
मैथ्यू फ्लिन

@MatthewFlynn - शानदार लेख। "बिग बॉल ऑफ मड" वाक्यांश कई बार दिखाई दिया, यह एलन इवरसन के "प्रैक्टिस" ( youtube.com/watch?v=eGDBR2L5kzI ) के एक deja vu अनुभव की तरह लगा । ;-)
हैप्पी ग्रीन किड नेप्स

3
और संदर्भ चाहिए। आप कोड क्यों बदल रहे हैं, परिवर्तन की गुंजाइश क्या है - घंटे, दिन, सप्ताह, काम के महीने। जो बदलाव के लिए भुगतान कर रहा है और क्या इसकी वास्तव में जरूरत है। जो बदलाव की आवश्यकता को मंजूरी देता है। आप क्या प्रक्रिया कर रहे हैं और यह इतनी बुरी तरह से कैसे विफल हो गया कि आप इस गड़बड़ में शामिल हो गए।
मैट्नज

जवाबों:


62

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

पूर्व संचार के बिना और फिर से लिखना बीमार इच्छा के लिए एक नुस्खा है।


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

+1 "डेवलपर से बात करें" के लिए - हमारे पास एक बग है (ठीक है, कम से कम एक, शायद अधिक) जो ग्राहक अब उम्मीद करता है ... और अब तक दफन है कि मैं केवल एक ही था जो अस्पष्ट रूप से जानता था कि इसे क्यों छोड़ा गया था अकेला।
इज़काता

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

2
@Aaronaught - मूल डेवलपर से पूछने का सवाल है कि पहले यह पता चलता है कि ओपी ने अभी तक मूल डेवलपर से बात नहीं की है और इस तरह उसने सभी को खोजने की कोशिश नहीं की है। मुझे आशा है कि उत्तर ट्राइट के विपरीत है - यह मौलिक है।
मैथ्यू फ्लिन

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

35

इस प्रश्न का बहुत बड़ा आधार मेरे लिए कई चिंताएँ हैं जो मुझे नहीं लगता कि कोई भी मौजूदा उत्तर पर्याप्त रूप से संबोधित करने की कोशिश कर रहा है। मुझे यहाँ कुछ फॉलो-अप प्रश्न पूछना चाहिए:

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

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

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

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

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

  5. सवाल में कहा गया है, पहले अनुच्छेद में, any developer can change any line of code to add functionality, to refactor, fix bugs or improve designs। क्या कोई पुनर्लेखन इन कामों को नहीं करेगा ? या यह कुछ अतिरिक्त करेगा - और यदि हां, तो क्या? मौलिक रूप से, एक पुनर्लेखन करने के इच्छुक लोगों के लिए आपके क्या कारण हैं , और आप कितने आश्वस्त हैं कि वे उत्पाद या टीम को लाभान्वित करेंगे? आपको मेरे लिए जवाब देने की आवश्यकता नहीं है, लेकिन आपके पास टीम के साथ चर्चा करने के लिए चुनने पर कुछ उद्देश्य बिंदु बेहतर होंगे।

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


3
+1 इस चर्चा में एकमात्र सही उत्तर है।
मैट्नज

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

11

आप कोड क्यों संपादित कर रहे हैं?

वहाँ कीड़े हैं या यह एक अधिक मौलिक डिजाइन दोष है?

पूर्व मामले में, मैं कोड में मामूली कीड़े हो सकता है जो ठीक करने के लिए एक पुनर्लेखन के बारे में चिंता करूँगा।

उत्तरार्द्ध मामले में, जबकि मुझे उम्मीद है कि सिर "अप" कोड मेरे संभावित रूप से फिर से लिखा जा रहा है, मैं इसके लिए पूरी तरह से खुश हूं।

यह सामूहिक कोड स्वामित्व का बिंदु है - आपके द्वारा लिखा गया कोड संशोधित होने के लिए है या यहां तक ​​कि अगर कुछ बेहतर साथ आता है।


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

6

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

विशेष रूप से यह कुछ हद तक टीम की गतिशीलता पर निर्भर करता है। एक जूनियर डेवलपर के कोड को फिर से लिखने के बारे में एक वरिष्ठ डेवलपर को बस इसे फिर से लिखने से पहले उनके साथ एक कोड समीक्षा (मेरी साइट) करनी चाहिए । इस तरह जूनियर डेवलपर स्थिति से सीख सकता है।


5

यह वास्तव में कोई फर्क नहीं पड़ता कि मूल डेवलपर टीम पर है या नहीं, या यहां तक ​​कि अगर आप मूल डेवलपर हैं या नहीं। निम्नलिखित कारणों से किसी भी साझा कोड का पूरा पुनर्लेखन आपकी टीम द्वारा चलाया जाना चाहिए:

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

4

जैसा कि मैथ्यू फ्लिन ने कहा, पहले डेवलपर से बात करना आवश्यक है। प्रारंभिक डेवलपर कार्यक्षमता के बारे में महत्वपूर्ण बातें बता सकता है और समझा सकता है कि यह या वह समाधान क्यों दिया गया था।

लेकिन कोड को फिर से लिखने या फिर से लिखने से पहले, या तो एक बैकअप या शाखा बनाएं, जिसमें कोड हो। यदि पुराना कोड ठीक काम करता है, तो एक मौका है कि इसे पुनर्प्राप्त किया जा सकता है।

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

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


2
"मेरा सुझाव है कि आप कुछ समय बाद कोड को हटा दें" - इस बीच में कहाँ रहना चाहिए? एक टिप्पणी ब्लॉक में? जो स्रोत नियंत्रण के लिए है, वर्तमान स्रोत कोड को साफ रखते हुए आसान पुनर्प्राप्ति के लिए सभी परिवर्तित / हटाए गए कोड की एक बैकअप प्रतिलिपि रखने के लिए।
dj18

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

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

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

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

2

इसकी क्या गुंजाइश है?

  • यदि आप अधिक कुशल होने के लिए कुछ पंक्तियों पर काम कर रहे हैं, तो बस करें। शायद पूछें कि क्या सूक्ष्म व्यवहार को मिटाने से आपको कुछ खतरा है। जब तक यह वास्तव में तुच्छ हो (एक टाइपो को ठीक करना), तब तक घोटाले के दौरान या ईमेल के माध्यम से परिवर्तन की रिपोर्ट करें।

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

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


1

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

हमारे पास abysmal code control है। वर्तमान में मेरे पास एक टन सामान है, जिसकी समीक्षा और रखरखाव की आवश्यकता है, और कोड समीक्षा के लिए भी किसी के पास नहीं है। पिछले लेखकों (moi से अलग) ने किसी भी कोड पर टिप्पणी करने की जहमत नहीं उठाई। और, वे कंपनी से चले गए हैं। कोड के बारे में पूछने वाला कोई नहीं है।

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

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

टिप्पणियाँ सस्ती हैं। तिथियां जो बदल गई हैं, उसका एक संकेतक होगा और बाद के दिनों की संख्या (दिनों / संशोधनों / नए किराए / रिटायर) के बाद कोड को पुरानी टिप्पणियों से साफ किया जा सकता है और शेष नई आधार रेखा है।


1

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

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

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

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

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

FixMe, ToDo, Bug और Hack जैसे टैग कोड को इंगित करने के लिए उपयोग किए जा सकते हैं जिन्हें बाद में बदला जा सकता है। (यह बग के रूप में सीमाओं को टैग करने और उन्हें ठीक करने के लिए स्वीकार्य है अगर उन्हें आवश्यक शर्तों के तहत ट्रिगर नहीं किया जाएगा।) यह बग हो सकता है यदि कोई घरेलू लेखा कार्यक्रम 20 मिलियन डॉलर में ओवरफ्लो करता है, लेकिन मैं बहुत समय फिक्सिंग नहीं करूंगा। यह।

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


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

1

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

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

दूसरी ओर, कुछ अन्य समय होते हैं जब एक पुनर्लेखन के लिए कहा जाता है:

  • कोड लिखे जाने के बाद से टीम ने बहुत कुछ सीखा है, और देव (ओं) ने लिखा है कि यह आपके इनपुट के बिना भी अब इसे अलग तरह से लिखेगा।

  • एक नई सुविधा की आवश्यकता स्थिति को बदल देती है जैसे कि एक लक्षित मिनी-रीराइट उपयुक्त है।

इन मामलों में, मैं शायद बातचीत से परेशान नहीं होता।

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


1

मुझे लगता है कि @ARonaught ने कुछ अच्छे अंक बनाए, जो वास्तव में उस उत्तर की ओर ले जाता है जो मैं देना चाहता था, जो यह है कि यह वास्तव में इस बात पर निर्भर करता है कि कौन परिवर्तन कर रहा है (और क्यों) और किसने कोड लिखा है।

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

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

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

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

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

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


-2

अक्सर कोड को एक निश्चित कारण के लिए लिखा जाता है। लेखक के लिए बदलाव का संचार करना हमेशा सबसे अच्छा काम करता है।

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