परियोजना लगभग पूरी हो चुकी है, लेकिन प्रक्रियात्मक स्पेगेटी कोड है। क्या मैं इसे फिर से लिखने या इसे जहाज करने की कोशिश कर रहा हूं? [बन्द है]


242

मैं एक शुरुआती वेब डेवलपर (अनुभव का एक वर्ष) हूं।

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

कॉकी के रूप में मैं वापस आ गया था, कंप्यूटर विज्ञान में डिप्लोमा के साथ, मैंने यह सोचकर प्रस्ताव स्वीकार किया कि मैं कुछ भी बना सकता हूं।

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

लेकिन फिर से वेब एप्लिकेशन बहुत बड़ा था। कंपनी मुझ पर पहला संस्करण देने का दबाव बना रही थी, जिसे वे जाहिर तौर पर तैनात करना चाहते थे और ग्राहकों की तलाश शुरू कर रहे थे।

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

इसलिए मैंने रात में छोटे प्रोजेक्ट्स पर काम करना शुरू किया, कार्यप्रणाली और बेहतरीन अभ्यास के बारे में पढ़ा। मैंने OOP पर दोबारा गौर किया, ऑब्जेक्ट-ओरिएंटेड डिज़ाइन और एनालिसिस के लिए आगे बढ़ा, और अंकल बॉब की किताब क्लीन कोड को पढ़ा ।

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

मुझे यह लगातार विचार चल रहा है कि मुझे पूरी परियोजना को फिर से लिखना होगा। हालाँकि, मैं ऐसा नहीं कर सकता ... वे पूछते रहते हैं कि यह सब कब हो रहा है।

मैं सर्वर पर तैनात इस कोड की कल्पना नहीं कर सकता। इसके अलावा मुझे अभी भी कोड दक्षता और वेब एप्लिकेशन के प्रदर्शन के बारे में कुछ नहीं पता है।

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

क्या मैं फिर से लिखना चाहता हूं, या बस जहाज करने की कोशिश करता हूं, या क्या कोई और विकल्प है जो मैंने याद किया है?


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

45
"लेकिन भगवान ही जानता है कि क्या हो सकता है जब लोग इसका इस्तेमाल करना शुरू कर दें" ... यही सॉफ्टवेयर विकास का मज़ा है। बेहतर आदत हो;)
linac

144
यह आपके द्वारा निर्मित हर एक प्रणाली होगी।
डिसमिसाइल

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

14
मेरे पिता मुझसे कहते थे "कभी-कभी आपको इंजीनियरों और जहाज को शूट करना पड़ता है।"
corsiKa

जवाबों:


253

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

सबसे पहले, जहाज। यदि आप व्यवसाय के स्वामी को सॉफ़्टवेयर दिखाते हैं, और उन्हें लगता है कि यह जहाज के लिए तैयार है, तो जहाज। यदि यह उस बिंदु पर नहीं है, लेकिन करीब है, तो इसे समाप्त करें। एकमात्र सॉफ्टवेयर जो मायने रखता है वह है जो वास्तव में उपयोग किया जाता है। एकमात्र सॉफ्टवेयर व्यवसाय जो पैसा कमाता है वह एक उत्पाद है।

दूसरे, आपने बहुत सी मूल्यवान चीजें सीखी हैं, इसलिए आपको उस अनुभव की सराहना करनी चाहिए जो उसने आपको सिखाया है :

  1. योजना या वास्तुकला के बिना स्लिंग कोड आपदा के लिए एक नुस्खा है
  2. कोड लिखने की तुलना में प्रोग्रामिंग के लिए बहुत कुछ है
  3. गैर-तकनीकी व्यवसाय के मालिक अक्सर तकनीकी निर्णयों (जैसे कि किसे किराया दें) के प्रभाव को नहीं समझते हैं, और यह डेवलपर्स पर निर्भर है कि वे उन्हें चीजों को समझाएं।
  4. अधिकांश समस्याओं को पहले से ही बेहतर हल किया गया है जितना कि आप उन्हें हल करेंगे, मौजूदा रूपरेखाओं में। यह उन ढांचों को जानने के लिए भुगतान करता है जो मौजूद हैं और उनका उपयोग कब करना है।
  5. कम मार्गदर्शन के साथ एक बड़ी परियोजना के लिए सौंपे गए स्कूल से बाहर के लोग स्पेगेटी कोड का कटोरा तैयार करते हैं। यह सामान्य बात है।

आगे बढ़ने के बारे में आपके लिए यहाँ कुछ और सलाह दी गई हैं:

  1. संवाद, संवाद, संवाद। आपको प्रोजेक्ट की स्थिति के बारे में बहुत खुला और स्पष्ट होना चाहिए और आपके विचारों को आगे बढ़ना है, भले ही आप अनिश्चित हों और कई रास्ते देखें। यह व्यवसाय के स्वामी को छोड़ देता है कि उसे क्या करना है। यदि आप अपने आप को ज्ञान रखते हैं, तो आप उन्हें विकल्पों से वंचित करते हैं।
  2. पूर्ण पुनर्लेखन के प्रलोभन का विरोध करें। जब आप पुनर्लेखन कर रहे हैं, तो व्यवसाय का कोई उत्पाद नहीं है। इसके अलावा, एक पुनर्लेखन शायद ही कभी उतना अच्छा हो, जितना आपने इसकी कल्पना की थी। इसके बजाय एक आर्किटेक्चर चुनें और धीरे-धीरे कोडबेस को माइग्रेट करें। यहां तक ​​कि एक भयानक कोडबेस को इस तरह से बचाया जा सकता है। आप के साथ मदद करने के लिए refactoring के बारे में किताबें पढ़ें।
  3. स्वचालित परीक्षण / इकाई परीक्षण के बारे में जानें । आपको कोड में विश्वास पैदा करना होगा, और ऐसा करने का तरीका यह है कि इसे स्वचालित परीक्षणों के साथ कवर किया जाए। यह रिफैक्टिंग के साथ हाथ से जाता है। जब तक आपके पास परीक्षण नहीं हैं, तब तक मैन्युअल रूप से और बड़े पैमाने पर परीक्षण करें (अपने कोड को तोड़ने की कोशिश करें, क्योंकि आपके उपयोगकर्ता ऐसा करेंगे)। उन सभी बगों को लॉग करें जिन्हें आप पाते हैं ताकि आप उन्हें प्राथमिकता दे सकें और ठीक कर सकें (आपके पास सभी बगों को ठीक करने का समय नहीं होगा, कोई भी सॉफ़्टवेयर जहाज वास्तविक दुनिया में बग-रहित नहीं है)।
  4. वेब एप्लिकेशन को कैसे परिनियोजित करें और इसे चालू रखने के बारे में जानें। पुस्तक वेब ऑपरेशन्स: डेटा ऑन रखना समय एक अच्छी शुरुआत है।

4
गैर-तकनीकी व्यवसाय के लोगों के पास अपनी चीजें हैं और वे वैसे भी तकनीकी चीजों को नहीं समझेंगे। यह डेवलपर्स के लिए है कि उन्हें लागत और लाभों के साथ तकनीकी रूप से व्यवहार्य विकल्प पेश करें (जिसमें इस तरह के कुख्यात मुश्किल और सार्वभौमिक रूप से नफरत वाली चीजें शामिल हैं, जो यह अनुमान लगाने के लिए सीख रही हैं कि कार्यों में कितना समय लगेगा)।
Jan Hudec

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

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

11
अकेले पहले बिंदु के लिए +1। सभी को याद रखें, शिपिंग एक विशेषता भी है
thegrinner

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

114

यह हर दूसरी प्रणाली की तरह लगता है जिसे ठीक करने के लिए मुझ पर फेंका गया है।

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

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

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

संपादित करें (जैसा कि इस प्रश्न में बहुत अधिक वोट हैं कि मैं कुछ और सामग्री जोड़ सकता हूं)

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

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

ओह और यूनिट परीक्षण के साथ न ही उपयोगकर्ता परीक्षण को भ्रमित करें और न ही सिस्टम परीक्षण के साथ।

  • यूनिट टेस्टिंग - क्या मेरा कोड फ़ंक्शन सही मान लौटाता है
  • सिस्टम टेस्टिंग - जब मैं X पर क्लिक करता हूं तो क्या यह एक एरर फेंक देता है
  • उपयोगकर्ता स्वीकृति परीक्षण (UAT) - क्या कार्यक्रम आवश्यकताओं के अनुरूप है? क्या यह वही है जो उन्होंने आपको इसे करने के लिए कहा था? क्या यह जीवित रह सकता है?

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

एक बार जब आप इस प्रक्रिया से गुजर चुके होते हैं तो कुछ बार आप एजाइल में देखना शुरू कर सकते हैं .. लेकिन यह एक और दुनिया है :)

टीएल; डीआर परीक्षण अच्छा है


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

1
+1 स्वीकार करने के लिए कि अधिकांश लोग पैसे ले लेंगे और गायब हो जाएंगे। इस तरह की चीज काम में सलाहकार रखती है।
जेम्स_पिक जूल

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

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

@ user2785724 - यदि आप कोड लिख रहे हैं, तो आप एक वास्तविक प्रोग्रामर हैं। हो सकता है कि आपके पास अनुभव कम हो, लेकिन यह आपको किसी भी तरह से कम नहीं करता है।
रॉकलैन

61

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

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

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

अंतिम, अनुशंसित पढ़ने का एक और बिट: मिट्टी की बड़ी गेंद


1
+ long.MaxValue के लिए c2.com/cgi/wiki मुझे लगता है कि साइट से प्यार है, भले ही यह एक तरह से मर चुका है।
यूसर

4
मैंने जोएल स्पोल्स्की के बारे में कभी नहीं सुना था, लेकिन मैंने सिर्फ उनके ब्लॉग पोस्टों को पढ़ने के लिए एक ठोस घंटा बिताया। वह पूरी तरह से प्रफुल्लित करने वाला है और स्पष्ट रूप से बहुत जानकार है।
एडम जॉन्स

9
@ अदमजोन: लेकिन आप उसके सॉफ्टवेयर का उपयोग कर रहे हैं। अभी। वह इस साइट के पीछे मुख्य आदमी है।
Jan Hudec

1
@ जानहुडेक हे और एटवुड।
jpmc26

5
अंत में, कोई और व्यक्ति जिसने इस स्थल पर जाने से पहले स्पोलस्की के बारे में कभी नहीं सुना था। यहाँ पढ़ने से आपको लगता है कि वह दूसरा आने वाला था।
MDMoore313

29

मैं भूल जाता हूं कि मैंने पहली बार इसे कहां पढ़ा था, लेकिन मैं बस प्रतिध्वनित करना चाहता था, कुछ और जबरदस्ती, जो अन्य लोगों ने कहा है:

शिपिंग एक विशेषता है।

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


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

24

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

परफेक्ट अच्छे का दुश्मन है।

क्लाइंट के लिए एक अच्छे सॉफ्टवेयर की तुलना में हमेशा एक अच्छा सॉफ्टवेयर होना बेहतर होता है जो कभी रिलीज नहीं होगा।

यह आपकी पहली परियोजना थी। भविष्य में कई और परियोजनाएं होंगी जहां आप शुरू से सीखी गई सभी चीजों को लागू कर सकते हैं।


15

मैंने [...] अंकल का बॉब क्लीन कोड पढ़ा।

मुझे यह लगातार विचार चल रहा है कि मुझे पूरी परियोजना को फिर से लिखना होगा।

इस पुस्तक में एक अनुभाग है, जिसे बहुत उपयुक्त रूप से "द ग्रैंड रिडिजाइन इन द स्काई" कहा गया है।

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

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


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

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

9

तुम अच्छा काम कर रहे हो।

आप कहते हैं कि आपका कोड काम करता है, और यह लगभग जहाज के लिए तैयार है, है ना? और आपको लगता है कि आपके कोड में काफी सुधार हो सकता है। अच्छा।

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

क्या आपके पास पेशेवर कोड-बेस के साथ काम करने का अनुभव है? कई कोड-बेस quirky से भरे हुए हैं, कोड को बनाए रखना मुश्किल है। एक बड़े प्रोग्राम को बनाने की कोशिश करके सॉफ्टवेयर की जटिलता का पता लगाने का एक विकल्प खुद अन्य लोगों द्वारा लिखे गए समान रूप से गंदे कोड को बनाए रखना / बढ़ाना होगा।

केवल ऐसे मामले जहां मैंने पूर्ण पुनर्लेखन को देखा है, वह बहुत अच्छा है जब टीम ने एक नया टूलचैन / फ्रेमवर्क अपनाया है।

यदि अंतर्निहित तर्क (प्रोग्राम क्या करता है, न कि यह कैसे कार्यों, कक्षाओं और इसके आगे के रूप में निर्धारित किया जाता है ...) ध्वनि है, यह बस के रूप में अच्छा काम करेगा, इसलिए, आप सोच रहे हैं कि यह स्पेगेटी कोड का मतलब नहीं है तैनात नहीं किया जाना चाहिए।

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

सब कुछ फिर से लिखने का एक बेहतर समय तब होगा जब कोई अन्य ग्राहक आपसे कुछ समान बनाने के लिए कहे।

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


7

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

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

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

यदि परियोजना के ऐसे पहलू हैं जो वैध रूप से बहुरूपता, कार्यान्वयन विरासत, आदि के लिए कहते हैं, तो मैं सुझाव दूंगा कि शायद परियोजना का आकार कम करके आंका गया था।


4
मैं जोड़ूंगा कि स्पेगेटी कोड प्रक्रियात्मक कोड तक सीमित नहीं है। बहुरूपता और वंशानुक्रम के गलत उपयोग से गड़बड़ हो सकती है जो कई जटिल प्रक्रियात्मक टुकड़ों की तुलना में समझने के लिए बहुत खराब है। इससे कोई फर्क नहीं पड़ता कि नियंत्रण का प्रवाह बुरी तरह से परिभाषित प्रक्रियाओं या जटिल वर्ग पदानुक्रम में विरासत का उपयोग करके पूरे स्थान पर कूदता है; यह अभी भी सभी जगह कूदता है और इसका पालन करना कठिन है।
Jan Hudec

4

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


4

उन कारणों के लिए जो दूसरों ने अच्छी तरह से समझाया है, यह परियोजना को खत्म करने और इसे जहाज करने का समय है, जैसा कि हो सकता है।

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

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

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

  • विधिपूर्वक हो।
  • हर सुविधा का प्रयास करें।
  • बहाना करें कि आप अपने आवेदन के साथ अनुभवहीन हैं। बेवकूफ गलतियाँ करें और देखें कि सॉफ्टवेयर उन्हें कैसे संभालता है।
  • लिखिए कि आप क्या कर रहे हैं ताकि आप समस्याओं को ठीक करने के बाद दोबारा कोशिश कर सकें।

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

1

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


0

यह वही है जो मैं व्यक्तिगत रूप से करूंगा:

  1. छोड़ो, एक बहाना बनाओ और छोड़ो
  2. अपने कोड को जितना संभव हो साफ करें
  3. अपने काम के सभी अच्छे हिस्सों जैसे अपने अच्छे डिज़ाइन, अच्छे विचार आदि पर प्रलेखन करें ...

मैं आपको ये सब क्यों सुझाता हूँ?

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

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

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


0

दो और सुझाव, मैं शर्त लगा सकता हूँ कि इनमें से कम से कम एक आपने नहीं किया है।

1) एक बग ट्रैकर रखें और अपने बॉस को इसका उपयोग करना सिखाएं। यह इस बात का हिस्सा हो सकता है कि आपने किस तरह से पंगा लिया है, बेहतर सीखा है और इसे योजनाबद्ध तरीके से तय करने जा रहे हैं

2) संस्करण नियंत्रण का उपयोग करना शुरू करें, हालांकि उम्मीद है कि आप पहले से ही ऐसा कर रहे हैं।

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

संपादित करें

वाह, किसी को वास्तव में यह पसंद नहीं आया - एक डाउनवोट और एक हटाए गए ध्वज? क्यों?

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


-2

आपके प्रश्न का उत्तर देने के लिए: जैसा कि कई अन्य लोगों ने कहा है, नहीं। इसे शिप करें, और बग्स को ठीक करने की प्रक्रिया में इसे थोड़ा-थोड़ा करके साफ करें।

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


-2

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


-2

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

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

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