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