मैं आपको हमारे अनुभव का नेतृत्व करूँगा LedgerSMB। हमने चीजों को अलग तरह से जल्दी करने का निर्णय लिया और अभी भी वही कर रहे हैं जो आप वर्णन करते हैं, लेकिन बहुत अधिक गोंद तरीकों के बिना (हमारे पास कुछ गोंद तरीके हैं btw, बस बहुत कुछ नहीं)।
दो कोडबेस के साथ जीवन
लगभग 5 वर्षों के लिए लेजरबर्म्स दो कोडबेस के साथ बच गया है और पुराने कोडबेस को समाप्त करने से पहले यह कई और अधिक हो जाएगा। पुराने कोडबेस को निहारना एक सही हॉरर है। खराब डीबी डिजाइन, पर्ल IS->some_func(\%$some_object);
कोड के साथ की तरह निर्माण करता है जो दिखाता है कि स्पैगेटी रूपक का उपयोग कभी-कभी क्यों किया जाता है (निष्पादन के रास्ते मॉड्यूल और पीठ के बीच और भाषाओं के बीच, बिना किसी तुक या कारण के)। नया कोडबेस डीबी प्रश्नों को संग्रहित प्रक्रियाओं में स्थानांतरित करने से बचाता है, जिसमें अनुरोध से निपटने के लिए एक क्लीनर फ्रेमवर्क होता है, और बहुत कुछ।
पहली चीज जो हमने करने का फैसला किया, वह था मॉड्यूल द्वारा रिफ्लेक्टर मॉड्यूल की कोशिश करना। इसका मतलब है कि एक विशिष्ट क्षेत्र में सभी कार्यक्षमता को एक नए मॉड्यूल में स्थानांतरित करना और फिर पुराने कोड को नए मॉड्यूल में हुक करना। यदि नया API साफ है, तो यह कोई बड़ी बात नहीं है। अगर नई API में चीजें नहीं हैं, तो बाल रूखे हो जाते हैं और यह नए API पर थोड़ा कठिन काम करने का निमंत्रण है ...।
दूसरी बात यह है कि कई बार पुराने कोड में नए कोड को तर्क तक पहुंचना पड़ता है। यह संभव हद तक बचा जा सकता है क्योंकि यह ऐसे तरीकों को गोंद करता है जो बदसूरत हैं, लेकिन कोई भी इसे हमेशा नहीं टाल सकता है। इस मामले में गोंद के तरीकों को कम से कम किया जाना चाहिए और जब तक संभव हो तब उपयोग किया जाना चाहिए।
इस कार्य को करने के लिए आपको एक विशिष्ट क्षेत्र में सभी कार्यक्षमता को फिर से लिखना होगा । यदि आप, उदाहरण के लिए, एक बार में सभी ग्राहक सूचना ट्रैकिंग कोड को फिर से लिख सकते हैं, तो इसका मतलब है कि पुराने कोड से कॉल करने वाले कोड के साथ काम करना मुश्किल नहीं है, और नए कोड से पुराने कोड को भेजना कम से कम है।
दूसरी बात यह है कि अगर आपकी जगह पर उचित सार है, तो आपको यह चुनने में सक्षम होना चाहिए कि एपीआई के किस स्तर पर कॉल करना है और उस सफाई को कैसे रखना है। हालांकि, आपको उन हिस्सों को फिर से लिखने के बारे में सोचना चाहिए जो आपके एपीआई को बुला रहे हैं ताकि वे थोड़ा साफ होने के साथ-साथ काफी साफ-सुथरे भी हों।
ऐसे कई व्यवसाय उपकरण हैं जो कि बहुत ही जटिल हैं। आप सभी जटिलता से छुटकारा नहीं पा सकते हैं। लेकिन आप इसे साफ एपीआई के फोकस पर ध्यान केंद्रित करके प्रबंधित कर सकते हैं, जो विशेष रूप से आपको क्या करने की आवश्यकता है, और मॉड्यूल जो उस एपीआई का रचनात्मक उपयोग करते हैं। ग्लू केवल एक अंतिम उपाय होना चाहिए, यह विचार करने के बाद कि बाकी कॉलिंग कोड फिर से लिखना तेज हो सकता है।