स्रोत नियंत्रण में उपयोगी हटाए गए कोड का निर्धारण कैसे करें?


9

इसलिए मैं इस सवाल पर पढ़ रहा था कि क्या मुझे बिना कोड वाला कोड हटाना चाहिए?

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

आप इस हटाए गए कोड को कैसे व्यवस्थित करते हैं ताकि बाद में आपके (या किसी अन्य प्रोग्रामर का) संस्करण बाद में मिल सके? क्या आप एक अलग शाखा बनाते हैं या इसे किसी तरह स्रोत नियंत्रण में टैग करते हैं?

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


क्या आप लाभ पूछ रहे हैं vcs? लग रहा है जैसे svn
gnat

svn मेरे मन में है, लेकिन किसी भी स्रोत नियंत्रण पर लागू हो सकता है, मुझे लगता है?
पीटर स्मिथ

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

जवाबों:


6

जब तक आप एक शाखा में प्रयोग नहीं कर रहे हैं और अभी तक यह सुनिश्चित नहीं कर रहे हैं कि आखिरकार कौन सा समाधान फिर से होगा, तो आप आमतौर पर हटाए गए कोड का संदर्भ नहीं देते हैं।

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

विशेष रूप से, आप हो सकते हैं ...

  • एक सामान्य कोड की समीक्षा करना / रिफ्लेक्टर को समझना
  • बग X को पेश करने वाले कमिट की तलाश में
  • अपनी जिज्ञासा को संतुष्ट करना / एक बग को हल करने वाले कमिट की तलाश करना
  • एक सुविधा या इसी तरह की सुविधा को फिर से लागू करना
  • कोड या डेटा जो ऐसा लगता है कि यह कोड के साथ मिलकर काम करता है जो मौजूद नहीं है

... आदि।

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


4

मुझे लगता है, इसका उत्तर है: प्रोग्रामर के विशाल बहुमत को हटाए गए कोड का संदर्भ नहीं है। कई कारणों के लिए। मेरे मन में आने वाले कुछ कारण हैं:

  • शायद सबसे महत्वपूर्ण, शुद्ध आलस्य ...

  • अधिकांश ने कभी भी कुछ कोड को पुनर्जीवित करने की आवश्यकता महसूस नहीं की, इसलिए उनके पास ऐसा कोई अनुभव नहीं है जो उन्हें पुनरुत्थान कोड को आसान बनाने के लिए प्रेरित करता है।

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

    ध्यान दें कि यह फिर से एक मनोवैज्ञानिक मुद्दा है: अधिकांश प्रोग्रामर अपने काम के परिणामों पर काफी गर्व करते हैं। यह कैसे समझ में आ सकता है कि उनके बदले जाने वाले मूल्य में अभी भी कुछ मूल्य था?

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

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


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

1
@PeterSmith: आपको ऐसे कोड के लिए अलग से शाखाएँ बनानी चाहिए। फिर कोड को हटाने की आवश्यकता नहीं है, क्योंकि यह काम करने वाली शाखा में वैसे भी मौजूद नहीं है।
जैक्सबी

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

1

यह सवाल संभवतः "बग डेटाबेस और आपके सिस्टम की आवश्यकताओं के विरुद्ध अपने VCS चेकइन की ट्रेसबिलिटी को कैसे बनाए रखता है?"

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

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

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

तो सीधे प्रश्न का उत्तर देने के लिए - अपने वीसीएस सिस्टम में शाखाओं / टैग को हटाए गए कोड को ट्रैक करने के लिए उपयोग न करें - अपने परिवर्तन ट्रैकिंग टूल का उपयोग करें।


0

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

"प्रायोगिक कार्य" वास्तव में एक अलग मुद्दा है। उसके लिए आपकी एक अलग शाखा होनी चाहिए।

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