ए "पुनः लिखना" (या कम से कम एक गंभीर रिफैक्टरिंग) कभी-कभी एक सोल्यूटन का एहसास होने पर सबसे अच्छा तरीका आगे बढ़ने योग्य नहीं है।
इसका एक उदाहरण एक चित्रकारी पैकेज है जिसे मैं 1 9 80 के दशक में लिखता हूं। यह एक 16-रंग बिटमैप पर काम करने के लिए थोड़ा मज़ा के रूप में शुरू हुआ। जब यह 20kB बेसिक कोड था, मैंने सोचा "मुझे 16 या 256 रंगीन छवियों को संभालने में सक्षम बनाने के लिए इसे फिर से लिखना चाहिए"। लेकिन यह "बहुत अधिक काम" था। जब यह 50kb था तो यह स्पष्ट था कि इसे फिर से लिखने की ज़रूरत है, लेकिन इसमें बहुत लंबा समय लगेगा। तो मैंने उस कोड को जोड़ना जारी रखा जो 16 रंग की छवि होने पर निर्भर था, जब तक यह उस बिंदु तक नहीं पहुंच गया जहां यह 140 केबी था और फिर से लिखने के लिए पूरी तरह अव्यवहारिक था। जब मैं पुनः लिखना केवल कुछ घंटों का काम करता था तो मुझे हमेशा बुलेट काटने से खेद नहीं हुआ।
एक और उदाहरण: मैंने एक वेक्टर कला पैकेज पर काम किया जो अपने दृश्यग्राफ पदानुक्रम में सभी वस्तुओं के आसपास घटनाओं को प्रसारित करता है। शुरुआती चरणों में इसमें कुछ दस वस्तुएं थीं और जैसे ही मेरे प्रबंधक ने कहा, "हम प्रति सेकेंड 10,000 से अधिक वस्तुओं को प्रसारित कर सकते हैं", इसलिए प्रसारण जारी रहे। मैंने दिलचस्पी रखने वाली वस्तुओं को अक्षमता को हटाने के लिए आवश्यक घटनाओं की सदस्यता लेने का सुझाव दिया, लेकिन "कोई ज़रूरत नहीं थी"। 2 साल (प्रयास के 40 साल के वर्षों) बाद में, कार्यक्रम एक समय में 2-4 सेकंड के लिए रुक गया था क्योंकि दृश्यग्राफ में 500 वस्तुओं की तरह अधिक था और 2 प्रसारण कार्यक्रम 40 या उससे अधिक हो गए थे।
इस पैटर्न को कई वर्षों में शामिल किया गया है, जिसमें मैंने वर्षों से शामिल किया है - आप गंभीर डिजाइन दोष या तकनीकी ऋण की खोज करते हैं और आप इसे ठीक करने में रोक देते हैं क्योंकि (ए) यह "अभी तक" कोई समस्या नहीं है, और (बी) अब इसे हल करने के लिए बहुत अधिक समय लगेगा। जैसे-जैसे समय चल रहा है, यह एक समस्या का रैखिक रूप से अधिक हो जाता है, लेकिन इसे ठीक करने के लिए तेजी से महंगा होता है। इसलिए हालांकि इसे अधिक से अधिक फिक्सिंग की जरूरत है, इसे ठीक करने की लागत को उचित ठहराना मुश्किल है।
इन मामलों में, तकनीकी ऋण या डिज़ाइन दोष को के रूप में यथासंभव हल करने की आवश्यकता है। एक हफ्ते के लिए अपना शेड्यूल वापस रखने के लिए इसमें कमी आती है (यदि आप एक प्रबंधक हैं) या प्रेरकता (यदि आप अंडरलिंग कर रहे हैं), लेकिन कल्पना करें कि कोई सहारा नहीं है लेकिन एक साल में फिक्स में 2 महीने समर्पित करने के लिए!
बेशक, यह तर्क सभी मामलों पर लागू नहीं होता है। आपको किसी भी प्रस्तावित फिक्स की लागत/लाभ का मूल्यांकन करने की आवश्यकता है, और समस्या की स्केलेबिलिटी पर विचार करें - यदि समस्या स्थिर है, तो आप इसे भविष्य में किसी भी समय एक ही कीमत के लिए ठीक कर सकते हैं। यदि आप अपने सिस्टम में जो भी नई कक्षा जोड़ते हैं, वह दोष उत्पन्न करता है, और आप नए वर्गों के हंडर्स जोड़ने की उम्मीद करते हैं, तो वापस जाएं और इसे ठीक करें।
स्रोत
2010-05-28 20:39:28
आयु। जब एक तकनीक ने बेहतर दिन देखा है * और * इसके लिए समर्थन, प्रोग्रामर के मामले में, पतला बढ़ रहा है, शायद यह कुछ नया लिखने का समय है। मैंने कोबोल, डेटाफ्लेक्स और वीबी 6 सिस्टम को फिर से लिखा है। कोई तर्क दे सकता है कि इन प्रणालियों के लिए समर्थन अभी भी उपलब्ध है, लेकिन अधिकांश प्रोग्रामर खुद को नवीनतम कौशल के साथ बाजार में रखना चाहते हैं जिससे पुरानी प्रौद्योगिकियों को धूल में छोड़ दिया जा सके। तो यदि आपको डेटाफ्लेक्स प्रोग्रामर ढूंढने में परेशानी हो रही है, तो हाँ, शायद यह फिर से लिखने का समय है। –
इसके बारे में: क्या होगा यदि आपने पुराने प्रोजेक्ट से जो कुछ सीखा है, उसके आधार पर आपने एक नया उत्पाद बनाया है, जिसे लोग फिर से लिखना चाहते हैं? पुराने को छोड़ दें, और उसी लाइन के नए प्रोजेक्ट हिस्से पर विचार न करें? –