कोडिंग मानकों में विकास, आप उनके साथ कैसे व्यवहार करते हैं?


12

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

मान लीजिए कि आपका कोडबेस कोड की 500.000+ लाइनें है। क्या आप अभी भी सभी मौजूदा कोड को बदलना चाहेंगे? या आप केवल नए कोड को नए मानक का पालन करने देंगे? मूल रूप से निरंतरता खो देते हैं?

आप अपनी परियोजना पर कोडिंग मानकों में एक विकास से कैसे निपटते हैं?

जवाबों:


16

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

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

यह कहना नहीं है कि मानकों से कोई फर्क नहीं पड़ता। बस ध्यान रखें कि मानकों का लक्ष्य उत्पादकता है। यदि आप एक नए मानक के लिए फिर से लिखने की गारंटी नहीं दे सकते हैं, तो दीर्घकालिक में खुद के लिए भुगतान करेंगे, तो उस पर समय बर्बाद न करें। नए या नए कोड में एक नए मानक को सही ठहराना कहीं अधिक आसान है। लालित्य शांत है, लेकिन यह परिणामों के समान नहीं है।


6

हम कोड बेस के लिए भी विकास (क्रांति नहीं) कर रहे हैं, हम अद्यतन मानक का उपयोग करेंगे;

  • नया कोड लिखा है
  • कोड को फिर से सक्रिय किया गया है
  • कीड़े तय हो गए हैं
  • नए भागों को एक मौजूदा वर्ग में जोड़ा जाता है

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


3

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

कहा कि, कोडिंग मानक में बदलाव के लिए विचार करने के लिए दो मामले हैं:

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

2

यह वास्तव में आपके द्वारा बनाए जा रहे उत्पाद के प्रकार पर निर्भर करता है:

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

1
मैं जोड़ूंगा कि यह आपके परीक्षण कवरेज पर भी निर्भर करता है। मैंने कुछ बहुत बड़ी 10,000+ पंक्तियों को पुनः लोड किया है आत्मविश्वास के भार के साथ क्योंकि महत्वपूर्ण कार्यक्षमता एकीकरण और इकाई परीक्षणों द्वारा कवर की गई थी।
मार्टिज़न वेरबर्ग

@Martijn - अच्छी बात है, यह भी बहुत सही है।
mrwooster

0

व्यक्तिगत रूप से, मैं पुराने कोड रखने का विकल्प चुनूंगा, और आप जो भी नया करेंगे, उससे नए मानकों का पालन करेंगे। विशेष रूप से, मैं पुराने मानकों में दोहरे मानकों का उपयोग नहीं करूंगा। लेकिन अगर मैं new.c बनाने जा रहा हूँ, तो यह नए, परिष्कृत वाक्य रचनाओं का उपयोग कर सकता है :)


क्या आप उस पसंद के पीछे का कारण बता सकते हैं?
वार्ड बेकर

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