मैं इस तरह के उपयोग के खिलाफ एक उत्तर देने की कोशिश करूँगा, जिसे देखने के बाद और मेरी एक परियोजना में भी इस पर काम किया है।
कोड पठनीयता
सबसे पहले, विचार करें कि कोड पठनीयता महत्वपूर्ण है और यह अभ्यास उसी के लिए काउंटर है। कोई व्यक्ति कोड का एक टुकड़ा पढ़ता है और चलो यह कहते हैं कि यह एक फ़ंक्शन है doSomething(Employee e)
। यह अब पढ़ने योग्य नहीं है, क्योंकि Employee
विभिन्न पैकेजों में मौजूद 10 अलग-अलग वर्गों के कारण आपको यह जानने के लिए कि आपके इनपुट वास्तव में क्या हैं, यह जानने के लिए आपको सबसे पहले आयात घोषणा का सहारा लेना होगा।
यह, हालांकि, एक उच्च-स्तरीय दृश्य है और हमारे पास अक्सर यादृच्छिक नाम की झड़पें होती हैं, जिनके बारे में कोई परवाह नहीं करता है या यहां तक कि पाता है, क्योंकि अर्थ शेष कोड से प्राप्त किया जा सकता है और आप किस पैकेज में हैं। इसलिए कोई भी बहस कर सकता है। स्थानीय स्तर पर, कोई समस्या नहीं है, क्योंकि यदि आप Employee
एक hr
पैकेज के भीतर देखते हैं, तो आपको यह जानना होगा कि हम कर्मचारी के एचआर के बारे में बात कर रहे हैं।
जैसे ही आप इन पैकेजों को छोड़ते हैं, चीजें टूट जाती हैं। एक बार जब आप एक अलग मॉड्यूल / पैकेज / आदि में काम कर रहे हों और आपको किसी कर्मचारी के साथ काम करने की आवश्यकता हो, तो आप पहले से ही पठनीयता का त्याग कर रहे हैं यदि आप इसके प्रकार को पूरी तरह से योग्य नहीं करते हैं। इसके अतिरिक्त, 10 विभिन्न Employee
वर्गों के होने का अर्थ है कि आपकी IDE की स्वतः पूर्णता अब काम नहीं करेगी और आपको स्वयं को कर्मचारी के प्रकार से चुनना होगा।
कोड दोहराव
इनमें से प्रत्येक वर्ग की प्रकृति एक-दूसरे से संबंधित होने के कारण आपका कोड बहुत अधिक दोहराव के कारण बिगड़ने के लिए बाध्य है। ज्यादातर मामलों में, आपके पास एक कर्मचारी का नाम या कुछ पहचान संख्या जैसी कुछ होगी, जिसे प्रत्येक वर्ग को लागू करना होगा। भले ही प्रत्येक वर्ग अपने स्वयं के दृष्टिकोण को जोड़ता है, अगर वे अंतर्निहित कर्मचारी डेटा साझा नहीं करते हैं, तो आप बेकार के विशाल द्रव्यमान के साथ समाप्त हो जाएंगे, लेकिन महंगा, कोड।
कोड जटिलता
आप पूछ सकते हैं कि क्या इतना जटिल हो सकता है? आखिरकार, प्रत्येक वर्ग इसे जितना चाहे उतना सरल रख सकता है। वास्तव में एक समस्या यह बन जाती है कि आप परिवर्तनों को कैसे प्रचारित करते हैं। एक यथोचित सुविधा संपन्न सॉफ़्टवेयर में आप कर्मचारी डेटा को बदलने में सक्षम हो सकते हैं - और आप हर जगह इसे प्रतिबिंबित करना चाहते हैं। कहते हैं कि एक महिला ने सिर्फ शादी की और आपको उसका नाम बदलकर उससे अलग X
होना पड़ाY
उसके कारण। सभी जगह इस अधिकार को करने के लिए पर्याप्त है, लेकिन तब भी जब आप इन सभी अलग-अलग वर्गों के होते हैं। आपके अन्य डिजाइन विकल्पों के आधार पर, इसका मतलब यह आसानी से हो सकता है कि प्रत्येक वर्ग को अपने स्वयं के श्रोता को लागू करना होगा या इस तरह के बदलावों की सूचना देनी होगी - जो मूल रूप से एक ऐसे कारक के रूप में अनुवादित होता है जिसे उन कक्षाओं की संख्या पर लागू किया जाना है जिनसे आपको निपटना है। । और निश्चित रूप से अधिक कोड दोहराव, और कम कोड पठनीयता, .. इस तरह के कारक जटिलता विश्लेषण में अनभिज्ञ हो सकते हैं, लेकिन उन्हें यकीन है कि आपके कोड आधार के आकार पर लागू होने पर वे परेशान हैं।
कोड संचार
कोड जटिलता के साथ उपरोक्त समस्याओं के अलावा, जो डिज़ाइन विकल्पों से भी संबंधित हैं, आप अपनी उच्च-स्तरीय डिज़ाइन स्पष्टता को भी कम कर रहे हैं और डोमेन विशेषज्ञों के साथ ठीक से संवाद करने की क्षमता खो देते हैं। जब आप आर्किटेक्चर, डिज़ाइन या आवश्यकताओं पर चर्चा करते हैं, तो आप सरल कथन बनाने के लिए स्वतंत्र नहीं रह जाते हैं given an employee, you can do ...
। एक डेवलपर को अब नहीं पता होगा employee
कि उस बिंदु पर वास्तव में क्या मतलब है। हालांकि एक डोमेन विशेषज्ञ इसे जरूर जानेंगे। हम सब करते हैं। की तरह। लेकिन सॉफ़्टवेयर के संदर्भ में अब संवाद करना इतना आसान नहीं है।
समस्या से कैसे छुटकारा पाएं
इससे अवगत होने के बाद और अगर आपकी टीम इससे सहमत है कि यह एक बड़ी समस्या है जिससे निपटने के लिए, तो आपको इससे निपटने के लिए एक तरीके से काम करना होगा। आमतौर पर, आप अपने प्रबंधक से पूरी टीम को एक सप्ताह का अवकाश देने के लिए नहीं कह सकते हैं ताकि वे कचरा बाहर निकाल सकें। तो संक्षेप में, आपको इन वर्गों को आंशिक रूप से समाप्त करने का एक तरीका खोजना होगा, एक समय में एक। इसके बारे में सबसे महत्वपूर्ण हिस्सा यह तय करना है - पूरी टीम के साथ - Employee
वास्तव में क्या है। सभी व्यक्तिगत विशेषताओं को एक ईश्वर-कर्मचारी में एकीकृत न करें । एक कोर-कर्मचारी के बारे में अधिक सोचें और सबसे महत्वपूर्ण, यह तय करें कि वह Employee
वर्ग कहाँ निवास करेगा।
यदि आप कोड की समीक्षा करते हैं, तो यह सुनिश्चित करना विशेष रूप से आसान है कि समस्या कम से कम आगे न बढ़े, यानी जब वे Employee
फिर से एक और जोड़ना चाहते हैं तो सभी को अपने ट्रैक में रोक दें । यह भी ध्यान रखें कि नए सबसिस्टम सहमत का पालन करते Employee
हैं और पुराने संस्करणों तक पहुंचने की अनुमति नहीं है।
अपनी प्रोग्रामिंग भाषा के आधार पर, आप उन कक्षाओं को भी चिह्नित करना चाहते हैं, जिन्हें अंततः @Deprecated
आपकी टीम को तुरंत यह एहसास दिलाने में मदद करने के लिए कुछ के साथ समाप्त कर दिया जाएगा कि वे उस चीज़ के साथ काम कर रहे हैं जिसे बदलना होगा।
पुराने कर्मचारी वर्गों से छुटकारा पाने के लिए, आप प्रत्येक व्यक्तिगत मामले के लिए निर्णय ले सकते हैं कि यह कैसे सबसे अच्छा समाप्त हो जाता है, या बस एक सामान्य पैटर्न पर सहमत होता है। आप वर्ग के नाम को चिपका सकते हैं और इसे वास्तविक कर्मचारी के चारों ओर लपेट सकते हैं, आप पैटर्न (डेकोरेटर या एडेप्टर का ध्यान रखें), या, या का उपयोग कर सकते हैं।
एक लंबी कहानी को छोटा करने के लिए: यह "अभ्यास" तकनीकी रूप से ध्वनि है, लेकिन छिपी हुई लागतों से भरा है जो केवल सड़क के नीचे होगा। जबकि आप तुरंत समस्या से छुटकारा पाने में सक्षम नहीं हो सकते हैं, आप इसके हानिकारक प्रभावों से तुरंत शुरू कर सकते हैं।