2014-06-11 29 views
6

क्या उत्पादन कोड में container.Verify() पर कॉल करने का सबसे अच्छा अभ्यास है? मैं एक में जाने की सोच रहा था:सरल इंजेक्टर सत्यापन() उत्पादन कोड

#IF Debug 
    container.Verify(); 
#ENDIF 

मैं परिवर्तन करने के लिए किसी भी असली कारण नहीं है, क्या आम सहमति/सबसे अच्छा अभ्यास है के रूप में बस जिज्ञासु।

उत्तर

7

Verify पर कॉल करने के लिए उपयोगी है या नहीं, बहस के लिए खुला है या नहीं। 2011 में वापस, Mark Seemannsuch a method is close to worthless सोचते थे। मेरी राय यह है कि Verify पर कॉल करने में वास्तविक मूल्य है, लेकिन मैं मार्क की भावना को समझता हूं और सहमत हूं कि Verify स्वयं को कॉल करना आम तौर पर पर्याप्त नहीं है। यही कारण है कि आपके DI कॉन्फ़िगरेशन सत्यापित करने के बारे में सरल इंजेक्टर विकी में Verifying the container’s configuration पर स्पष्ट मार्गदर्शन है।

सरल इंजेक्टर के साथ हालांकि, Verify परीक्षण से कहीं अधिक करता है कि यह आपके ऑब्जेक्ट ग्राफ़ बना सकता है या नहीं। Verify पर एक कॉल सरल इंजेक्टर के Diagnostic Services को किक-ऑफ करेगा जो बहुत आम खोजता है, लेकिन कभी-कभी कॉन्फ़िगरेशन त्रुटियों को स्पॉट करने के लिए बहुत कठिन होता है (एक सुविधा जो मार्क ने उस लेख को लिखा था) के दौरान उपलब्ध नहीं था।

आम तौर पर मेरी सलाह है कि आप अपने उत्पादन कोड में container.Verify पर कॉल करें, यथासंभव लंबे समय तक। अपने स्टेजिंग पर्यावरण और उत्पादन में, डिबग और रिलीज बिल्ड दोनों में स्टार्ट-अप पर हमेशा इसे कॉल करें।

चूंकि एप्लिकेशन बड़ा हो जाता है, तो स्टार्ट-अप के दौरान container.Verify पर कॉल करने में अधिक समय लगता है। कुछ प्रकार के अनुप्रयोग दूसरों के मुकाबले ज्यादा संवेदनशील होते हैं। सर्वर अनुप्रयोगों के लिए आमतौर पर एक लंबा स्टार्ट-अप समय होना ठीक है, जबकि डेस्कटॉप और मोबाइल फोन अनुप्रयोगों को और अधिक तेज़ी से शुरू करना चाहिए।

एक बार जब आप स्थिति यह है कि Verify के लिए एक कॉल बहुत अधिक समय -लेकिन केवल तात्कालिक आप Verify का कॉल निकालना चाहिए लेता में मिलता है, लेकिन कम से कम अभी भी एक इकाई/एकीकरण परीक्षण है कि container.Verify कॉल

। मुझे संकलक निर्देशों में Verify को लपेटने में कोई समस्या नहीं दिख रही है (जैसा कि आपने अपने प्रश्न में किया था), लेकिन फिर से ध्यान दें कि आईएमओ आपको जितनी देर तक संभव हो सके अपने स्टार्टअप पथ में Verify पर कॉल को हटाने को स्थगित कर देना चाहिए।

+0

प्रतिक्रिया के लिए धन्यवाद, स्टीवन। अगर मैं उपर्युक्त करना चाहता था, तो मैंने इसे एकीकरण/इकाई परीक्षणों के लिए चारों ओर रखने की योजना बनाई थी, ताकि इसे किसी रूप में पूर्व-तैनाती चलाने की गारंटी दी जाएगी। – Tris

संबंधित मुद्दे