तंग समय सीमा का सामना करने पर किसी और के कोड को साफ करना कितना महत्वपूर्ण है? [बन्द है]


38

(मैं HTML / CSS कोड (प्रोग्रामिंग भाषा नहीं) के बारे में बात कर रहा हूं, लेकिन मुझे लगता है कि हम प्रोग्रामर के साथ भी इसी मुद्दे का सामना करते हैं।)

मैं एक टीम में सबसे वरिष्ठ फ्रंट-डिज़ाइनर हूं और मुझे अक्सर अपने जूनियर्स के आउटपुट को टाइट डेडलाइन में फिर से काम करना पड़ता है।

मुझे 2 समस्याओं का सामना करना पड़ रहा है:

  1. उनकी कोडिंग स्टाइल थोड़ी गड़बड़ है।
  2. सौंदर्यशास्त्र अच्छे नहीं हैं।

उनकी कोडिंग शैली, मुझे पता है, एक मिश्रित बैग है जिसमें कोई उचित सम्मेलन / मानक नहीं है। मैं कोड को साफ करने या उनके कोड के साथ काम करने के बीच फटा हुआ हूं (यहां तक ​​कि वे चीजों को कैसे कॉपी करते हैं)।

मुझे लगता है कि मुझे उनकी कोडिंग शैली का पालन करना निराशाजनक लगता है क्योंकि मुझे लगता है कि मैं बुरी आदतें सीख सकता हूं। लेकिन फिर, यह समय सीमा को पूरा करने का सबसे तेज़ तरीका है।

अधिक अनुभव वाले लोगों के लिए, जो अधिक प्रभावी है? क्या मुझे बाद के लिए क्लीन-अप को सहेजना चाहिए? या जिस तरह से मैं बदलाव करता हूं उसी तरह से सफाई करता हूं?

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


1
यदि आपके पास विकल्प है, तो JetBrains उत्पादों (C # के लिए Re-Sharper, Java के लिए IntelliJ और यहां तक ​​कि कुछ 'डायनेमिक' भाषाएं) देखें, जो समय के बहुत कम निवेश के साथ प्रोजेक्ट-व्यापी मुहावरेदार परिवर्तन समाधान कर सकते हैं। (यह भी इंटरैक्टिव को सिखाने के लिए इस्तेमाल किया जा सकता है जो कि मुहावरेदार है। लेकिन सुनिश्चित करें कि आप और वे परियोजना के लिए एक ही सेटिंग पर सहमत हैं। और सुनिश्चित करें कि आप एक अलग प्रतिबद्ध में वह सब करते हैं, इसलिए आप मिश्रण नहीं करते हैं। एक ही प्रतिबद्ध में मूल और कॉस्मेटिक परिवर्तन),
डेविड बुलॉक

1
संबं धत
Doc Brown

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

10
मैं पहले से ही आपको टीम वर्क की कमी से जूझ रहा हूं। आपको जूनियर को शिक्षित और पोषण करना चाहिए ; न केवल उसके कोड को फिर से लिखना और इसके बारे में शिकायत करना।
जेम्स

3
ट्यूरिंग मशीन का अनुमान लगाने के बाद से @ राउथ ने ट्यूरिंग को तैयार किया। लेकिन इस बिंदु पर, यदि आप वरिष्ठ हैं जो आपको सुनने के लिए कनिष्ठों को प्राप्त करना चाहिए। उन्हें सिखाएं कि कैसे सही (या शंकालु तरीके से) करें। लेकिन उनकी राय पूछना ज़रूरी है और हो सकता है कि उनके पास बेहतर तरीके से सामान करने के लिए कुछ विचार हों। यदि आप किसी भी गैर-तुच्छ परियोजना के लिए कच्चे सीएसएस का उपयोग कर रहे हैं, तो आप इसे गलत कर रहे हैं, अपने प्रोजेक्ट को LESS / SASS को अपनाने की कोशिश करें।
हॉफमैन

जवाबों:


79

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

यदि आप आदतन उनके कोड को फिर से लिखते हैं, तो आप अपने जूनियर्स को यह आभास दे सकते हैं कि आप उनके काम को महत्व नहीं देते हैं, जिससे उनका मनोबल कम होगा, और अगली बार उन्हें बेहतर तरीके से कोड करने में मदद नहीं मिलेगी।

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

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

उन्हें कोड-समीक्षाएं करने का मौका देने से उनकी क्षमताओं में और वृद्धि होगी - यह देखकर कि अन्य लोग कोड कैसे और क्यों लिखते हैं - और अपने आत्म-सम्मान को बढ़ाएंगे।

यदि आप उन्हें अपने कोड की समीक्षा करने का मौका देते हैं तो वे भी बहुत कुछ सीखेंगे । आप भी कुछ सीख सकते हैं - तो यह सिर्फ दिखाने के लिए मत करो!


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

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

23
@Phil की समय सीमा की गणना करते समय, कोड समीक्षा सत्रों के लिए समय को ध्यान में रखा जाना चाहिए। यह डेवेलपमेंट प्रक्रिया के शीर्ष पर एक अतिरिक्त कदम नहीं है - यह विकास प्रक्रिया का एक अभिन्न अंग है।
dj18

2
इसके अलावा, कोड की समीक्षा के माध्यम से प्रशिक्षण जूनियर्स के पास निश्चित समय की लागत हो सकती है (जो कि dj18 कहते हैं कि आपके समय सीमा और अनुमानों में फैक्टर होना चाहिए) लेकिन इसे नियत समय पर कई बार चुकाना होगा क्योंकि यह आपको मुक्त करता है। अधिक मूल काम। यदि आपकी समय सीमा इतनी कड़ी है कि आपके पास ऐसा करने का मौका नहीं है, तो यह एक मृत्यु के बजाय बदबू आ रही है ...
जूलिया हेवर्ड

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

29

मैंने पहले भी यह कहा है और इसे फिर से कहूंगा "वर्किंग कोड सुंदर कोड की तुलना में अधिक मूल्यवान है"।

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

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


11
"यदि यह परीक्षण कोड है तो आपने परीक्षण के सभी प्रयासों को अमान्य कर दिया है, और परीक्षणों को दोहराने की आवश्यकता होगी।" नहीं, आपने परीक्षण के किसी भी प्रयास को अमान्य नहीं किया। आपको बस परीक्षणों को फिर से चलाना होगा, जो आपको वैसे भी प्रत्येक प्रतिबद्ध के लिए करना चाहिए। अगर ऐसा होने में इतना लंबा समय लगता है तो यह माना जाता है कि परीक्षण करना बकवास है और इसे ठीक कर लिया जाना चाहिए।
l0b0

7
यह ध्यान देने योग्य होना चाहिए कि "इसे काम करने" के लिए लगातार मैला कोड लिखना मिट्टी की बड़ी गेंद को जन्म देगा । यह अपवाद है तो ठीक है, और नियम नहीं। यदि यह नियम बन जाता है, तो आपको अपने बॉस से बात करनी चाहिए कि समय सीमा केवल विचार करने की चीज नहीं है।
नील

20
समस्या यह है कि बदसूरत कोड जल्दी टूटे हुए कोड में बदल जाता है।
तेलस्तीन

1
@ श्रम - यकीन है, लेकिन ओपी (और लगभग हर कोई) कोड के बारे में बात नहीं कर रहा है जो बस पुराने मानकों का उपयोग कर रहा है - वे अजीब, असंगत, घटिया कोड के बारे में बात कर रहे हैं।
तेलस्टिन

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

16
  • संक्षिप्त जवाब नहीं है। जब समय कठिन होता है, तो कभी-कभी आपको बस अपना सिर नीचे रखना पड़ता है और सौंदर्य की गोली लेनी होती है। ;)

  • एक अधिक व्यावहारिक जवाब यह समय-समय पर है। कोड के एक विशिष्ट पहलू को चलाने और साफ करने के लिए एक घंटे का बजट । फिर इसे जांचें और कुछ वास्तविक कार्य करें। लेकिन अपने आप को विवश रखने के बारे में ईमानदार रहें।

  • कभी-कभी, हालांकि, थोड़ी सी सफाई से काम तेज हो जाता है। यहां तक ​​कि कुछ त्वरित खोज-और-प्रकार प्रकार परिवर्तन सब कुछ बहुत अधिक सुलभ बनाते हैं।

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

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


9

कोड तय करते समय, और समय सीमा तय करने के बाद, मैं सामान्य रूप से दो नियमों का उपयोग करता हूं:

कोड भयानक है, लेकिन यह उचित समय में एक मुद्दा खोजने और इसे ठीक करने के लिए संभव है

मैं एक समस्या को ठीक करता हूं और बाकी को बरकरार रखता हूं ।

कोड इतना गन्दा है कि वास्तव में वहाँ एक मुद्दा खोजना मुश्किल है। कुछ कारणों को ठीक करने से तुरंत कुछ और टूट जाता है। उस कोड को स्क्रैच से फिक्स करने की तुलना में लिखना शायद तेज होगा।

तब मेरे पास फिर से लिखने / रिफलेक्टर करने के अलावा और कोई विकल्प नहीं है जब तक कि कोड स्थानीय रूप से बग को साफ करने और ठीक करने के लिए पर्याप्त नहीं होगा।

सीमा रेखा मामला है:

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

उस मामले में, कोड को तय किया जाना है, लेकिन केवल जब नई सुविधाओं को लागू करना है, निष्क्रिय समय के दौरान, समय सीमा के सामने बग-फिक्सिंग समय में कभी नहीं!


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

6

मुझे यह जानने में दिलचस्पी होगी कि आपकी प्रक्रिया में आप इस समस्या को किस बिंदु पर देख रहे हैं?

कड़ाई से बोलते हुए, इस जादुई आदर्श दुनिया में, जो हम में से कोई भी नहीं रहता है, पदोन्नत या तैनात सभी कोड सही होना चाहिए। ऐसा नहीं है कि कभी-कभी आपको व्यावहारिक होना पड़ता है।

हालांकि, यदि आपके पास एक कोड समीक्षा प्रक्रिया है, तो परीक्षण से पहले इसे उजागर करना चाहिए। यदि आप लगातार डेडलाइन के खिलाफ हैं, तो क्या समस्याएँ डिलीवरी के लिए अनुमान हैं कि किसी भी विकास प्रक्रिया का एक प्रमुख घटक - यानी - कोड समीक्षा - का गला घोंटा जा रहा है?

आपके जूनियर्स कभी भी पीछे बैठना नहीं सीखते हैं और चीजों को करने के बेहतर तरीके को आत्मसात कर लेते हैं यदि आप इसे सीखने के लिए अपनी देव प्रक्रिया का हिस्सा नहीं बनाते हैं। यह मुझे लगता है कि आप ऐसा नहीं कर रहे हैं।


4

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


3

भविष्य में समस्या पर अंकुश लगाने में मदद करने के लिए, एक आंतरिक कोडिंग मानक और व्यवहार दस्तावेज़ विकसित करें जिसका सभी कर्मचारियों को पालन करना चाहिए।

वर्तमान बैच के लिए, एस एंड पी दस्तावेज़ के अनुसार कोड को साफ करें क्योंकि आप कोड को रिफलेक्टर करते हैं लेकिन केवल जब आप रिफ्लेक्टर करते हैं।


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

@ क्या अमेरिकी सेना "बड़े और प्रक्रिया उन्मुख" के रूप में गिनती करती है? वे हर समय S & Ps का उपयोग करते हैं: stroustrup.com/JSF-AV-rules.pdf
केसी

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

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

@ डंक JSF-AV टीम ने इस बात को पहचाना होगा, दस्तावेज़ में S & Ps (2005 में वापस) लागू करने के तरीके के रूप में स्वचालित उपकरणों के उपयोग का विशेष रूप से उल्लेख है
केसी

2

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

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


2

समग्र गुणवत्ता में सुधार एक बड़े समूह के लिए "फिल्टर" के रूप में किसी एक व्यक्ति का उपयोग करने के लिए काफी हद तक बेहतर है। इस टिप्पणी पे:

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

2

सबसे अच्छा अभ्यास एक कोडिंग स्टाइल गाइड होना चाहिए, और नियमित समीक्षा होगी, ताकि जब आप समय सीमा के करीब पहुंच रहे हों, तो आपको इस समस्या का सामना न करना पड़े।

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

आपके लोगों के लिए कई लाभ हैं, जो करेंगे:

  • बेहतर शैली सीखें
  • बेहतर प्रथाओं का पालन करें
  • अनुसंधान करना सीखें कि वे क्या कर रहे हैं

और अपने लिए कुछ लाभ, आप होंगे:

  • अंतिम-मिनट डिबग के दौरान अधिक कुशल (जो हमेशा होगा)
  • आपकी टीम और प्रबंधन दोनों द्वारा एक विशेषज्ञ और एक नेता के रूप में मान्यता प्राप्त है

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

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

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

पायथन, ओपन-सोर्स कॉर्नुकोपिया होने के नाते, इसमें सभी प्रकार के मुफ्त टूल (पाइलिंट, पेप 8, पाइफ्लेक्स) हैं, जिनमें से कुछ को हमने संयुक्त और बेहतर बनाया है, जो कि हमारे हजारों डेवलपर्स हैं, वास्तव में अच्छी तरह से तराजू।
आरोन हॉल

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

2

मैं "क्या काम कर रहा है ठीक नहीं है" में कारण देख सकते हैं और "अपना समय बर्बाद नहीं करते हैं जो ग्राहक के लिए महत्वपूर्ण नहीं है" जवाब। पीएम जोखिम को लेकर चिंतित हैं और यह ठीक है।

इसके अलावा मैं समझता हूं कि ज्यादातर लोग इस तरह के फिक्स फील नहीं करते हैं। मैं यह भी समझता हूं।

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

टेक ऋण शब्द है। यह किसी दिन वापस आ जाएगा और कोई इसके लिए भुगतान करेगा।

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


0

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

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

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

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

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

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

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

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


0

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

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

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

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

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


0

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

कमिट आपकी स्वीकृति का इंतजार करेंगे। यदि आपको कोई ऐसी पंक्तियाँ दिखाई देती हैं, जिन्हें फिर से लिखा जाना चाहिए, तो आप टिप्पणियाँ लिख सकते हैं और आपके साथी आपकी आवश्यकताओं के आधार पर कोड को अपने आप ठीक कर सकते हैं। यह वास्तव में टीम के सदस्यों के कोडिंग मानकों को सीखने का एक अच्छा तरीका है ।

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