2012-01-30 9 views
11

मैंने पहले स्टैक ओवरफ्लो पर एक थ्रेड देखा था जिस पर इस पर कुछ चर्चा थी, हालांकि मैं इसे फिर से ढूंढने में असमर्थ हूं!सिस्टम का उपयोग। डायग्नोस्टिक्स। रिलीज में नियंत्रण

मुझे यह जानने में दिलचस्पी है कि सिस्टम। डायग्नोस्टिक्स। सामग्री का उपयोग 'असली कोड' में किया जाना चाहिए, यानी उत्पादन कोड का रिलीज निर्माण? मैं यह पूछता हूं, क्योंकि नामस्थान विवरण के आधार पर ऐसा लगता है कि अनुबंध डीबगिंग, या विश्लेषण उद्देश्यों के लिए है।

यह एक उपयोगी लाइब्रेरी की तरह लगता है जहां कार्यक्षमता के लिए पूर्व/पोस्ट की स्थिति महत्वपूर्ण है, और यदि कुछ/तो/अन्य चेक लिखने में कुछ प्रयासों से बच सकते हैं, तो यदि ऐसा है, तो क्या कोई विकल्प है कोर पुस्तकालयों?

+1

कृपया अपने शीर्षक को "सी #" और इस तरह से उपसर्ग न करें। टैग के लिए यही है। –

उत्तर

11

धारा 5.1 (तर्क सत्यापन और संविदा) documentation का विवरण तीन मुख्य उपयोग मोड आप संविदा प्रयोग करने के लिए विचार कर सकते हैं: केवल डीबग में संविदा के माध्यम से

  1. तर्क सत्यापन, बनाता है नहीं रिलीज बनाता में।
  2. रिलीज बिल्ड में भी सत्यापन।
  3. रिलीज बिल्ड में कस्टम तर्क सत्यापन, केवल डीबग बिल्ड में अनुबंध करता है।

तो कम से कम एक उपयोग मोड है जहां आप रिलीज बिल्ड में अनुबंध का उपयोग करेंगे, कम से कम आधिकारिक दस्तावेज का संबंध है।

उद्धरण:

इससे पहले कि आप अपने खुद के कोड में ठेके का उपयोग शुरू, तो आपको कुछ निर्णय है कि प्रभाव क्या अनुबंध रूपों तर्क सत्यापन और जहां (चित्रा 2 देखें) के लिए उपयोग करने के लिए बनाने की जरूरत है। ध्यान दें कि आप इन प्रबंधित निर्णयों (प्रत्येक प्रोजेक्ट) के लिए इन निर्णयों को स्वतंत्र रूप से कर सकते हैं:

अनुबंध उपकरण का सबसे आसान उपयोग यह है कि यदि आप तय करते हैं कि रिलीज बिल्ड में रनटाइम पर आपको तर्क सत्यापन करने की आवश्यकता नहीं है (उपयोग 1)। उस स्थिति में, आप विकास के दौरान अनुबंध उपकरण का उपयोग करते हैं, लेकिन शिप किए गए बिट्स पर नहीं। याद रखें, आप अपने रिलीज बिट्स के साथ अनुबंध संदर्भ असेंबली भेज सकते हैं ताकि ग्राहक कॉल-साइट के माध्यम से अपने डीबग बिल्ड पर आपके पैरामीटर सत्यापन की रनटाइम जांच प्राप्त कर सकें।

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

सबसे कठिन संयोजन तब होता है जब आप रिलीज बिल्ड में तर्क सत्यापन चाहते हैं, लेकिन आप केवल डीबग बिल्ड में रनटाइम जांच के लिए अनुबंध उपकरण का उपयोग कर रहे हैं, लेकिन रिलीज बिल्ड (उपयोग 3) में नहीं। उस स्थिति में, आपको अपने तर्क सत्यापन को पहले से ही लिखना जारी रखना होगा, अर्थात् if-then-throw कथन का उपयोग करना (हम उन्हें विरासत-आवश्यकता कहते हैं)। यदि आप इन्हें टूल खोजने योग्य बनाना चाहते हैं, तो उनके बाद अन्य अनुबंध (जैसे सुनिश्चित करें) जोड़ें, या अनुबंध। एंडकंट्रैक्टब्लॉक() का उपयोग करें, यदि कोई अन्य अनुबंध मौजूद नहीं है। ध्यान दें कि चूंकि आप रिलीज बिल्ड में रनटाइम चेकिंग टूल का उपयोग नहीं कर रहे हैं, इसलिए आपको अनुबंधों की कोई विरासत नहीं मिल रही है और आपको अपनी विरासत को मैन्युअल रूप से दोहराना होगा-ओवरराइड और इंटरफ़ेस कार्यान्वयन की आवश्यकता है।इंटरफ़ेस और अमूर्त तरीकों के लिए, यदि आप सामान्य रूप से अनुबंध कक्षाएं लिखते हैं और फॉर्म सुनिश्चित करते हैं तो आपको सबसे अधिक आनुवांश मिलता है ताकि आप अपने डीबग बिल्ड में जांच कर सकें और वे अनुबंध संदर्भ असेंबली में दिखाई दें और इस प्रकार निर्भर परियोजनाओं और स्थिर जांचकर्ताओं के लिए दृश्यमान हों।

यह भी संकेत देता है कि ढांचे के केवल अन्य हिस्सों का उपयोग करने का विकल्प क्या होगा: अगर-तो-फेंक का उपयोग करने का सामान्य तरीका।

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

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