क्या आपको फ़ीचर ब्रांच पर काम करने वाले कोड क्वालिटी को बेहतर बनाना चाहिए


11

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

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

हालांकि, अगर मैं एक सुविधा शाखा पर काम कर रहा हूं, और मुझे कुछ बदसूरत कोड मिले, तो क्या मुझे इसे ठीक करना चाहिए?

ऐसा लगता है कि इसे ठीक करने के लिए नीचे की ओर कई नंबर हैं:

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

दूसरी तरफ, अगर मैं फ़ाइल में होने के दौरान इसे नहीं करता हूं, तो स्पष्ट रूप से मैं इसे कुछ दिनों के लिए करना चाहता हूं जब मैं शाखा को मर्ज करता हूं।

मुझे चेतावनी दी गई थी कि यह राय आधारित थी (मुझे लगता है कि इस तथ्य को शीर्षक शामिल है should), लेकिन मुझे ऐसा लगता है कि एक उत्तर है (निश्चित रूप से लोग इन दोनों दृष्टिकोणों का उपयोग करते हैं, इसलिए उनके पास एक उत्तर होना चाहिए)। इसके अलावा, development methodologiesविषय के बारे में प्रश्न हैं और मुझे लगता है कि उन्हें एक राय की आवश्यकता है।



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

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

जवाबों:


8

आपको सुविधा शाखा में कोड को केवल 'ठीक' करना चाहिए, यदि आप फीचर के हिस्से के रूप में वैसे भी उस कोड को बदल रहे हैं।

उदाहरण के लिए। मैं 'प्रिंट खरगोश' सुविधा पर काम कर रहा हूं और मुझे प्रिंटर कोड मिल गया है

Public class Printer(string type)
{
    If(type=="bunnies")
    {
        //print a bunny
    }
.....
}

मैं इसे बदलता हूं:

Public class Printer(string type)
{
     PrintFunctionDictionary[type].Print();
}

क्यों:

  • मैं कोड पर काम कर रहा हूँ,
  • मुझे कार्यक्षमता जोड़ने के लिए इसे बदलने की आवश्यकता है,
  • अतिरिक्त कार्यक्षमता समस्या से निपटने का एक परिष्कृत तरीका बताती है।

मैं कोड बेस के कुछ अन्य हिस्से को बेतरतीब ढंग से नहीं मारता और इसे इस तरह से 'बेहतर बना दूंगा':

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

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

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

5

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

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


3

branchप्रकारों का उद्देश्य उन्हें संभालने के लिए इरादा प्रदान करना है। प्रकार की तरह आप शाखाओं के GitFlow शैली का अनुसरण कर रहे हैं, तो आप की संभावना है feature, hotfix, release, आदि .. एक विशेषता शाखा के मामले में, अपने इरादे अन्य शाखा (यानी में मर्ज संपुटित करने के लिए है developकि पता चलता है डेवलपर के लिए जिम्मेदार) विलय, यह सुविधा क्या है। यदि आप जिस कोड को साफ कर रहे हैं, वह उस सुविधा का हिस्सा नहीं है, तो उसे न बदलें।

इसके बजाय, सबसे कम संभव शाखा ढूंढें बदसूरत कोड (संभावना develop) और वहां से शाखा है। कोड को बदलें और प्रस्ताव करें कि इसे एक विशेषता के रूप में विलय कर दिया जाए। यदि आपको उस कोड की आवश्यकता है जो आप काम कर रहे हैं, और विशेष रूप से मर्ज संघर्ष से बचना चाहते हैं, तो उस शाखा को अपनी शाखा में मर्ज करें।

यहाँ विभिन्न रणनीतियों की एक बहुत अच्छी व्याख्या है: https://www.atlassian.com/git/tutorials/comparing-workflows/


0

अगर मैं एक सुविधा शाखा पर काम कर रहा हूं, और मुझे कुछ बदसूरत कोड मिले, तो क्या मुझे इसे ठीक करना चाहिए?

प्रोजेक्ट के टेंपो, कोड की 'बदसूरती' आदि के आधार पर 'बदसूरत कोड' को ठीक करना शायद ठीक है, लेकिन फीचर शाखा में ऐसा न करने की कोशिश करें।

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

मैं ऐसा कुछ और भी करूंगा जो विकास शाखा को 'ठीक' कर रहा है (जहाँ 'फ़िक्स' आप में बदलाव कर रहे हैं या कोई अन्य डेवलपर यह सुनिश्चित कर सकता है कि कोड मानकों का पालन करता है)। इससे मदद मिलती है...

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