2011-01-05 12 views
5

Debug.Print कथन के संबंध में सबसे अच्छा अभ्यास क्या है?सी #: सर्वोत्तम अभ्यास डीबग। प्रिंट

क्या मुझे Debug.Print कथन के साथ मेरी कक्षा विधियों को कूड़ा जाना चाहिए या क्या मुझे Debug.Print से पूरी तरह से बचना चाहिए?

यदि कथन स्वीकार्य हैं तो क्या मुझे Trace.Print या EventLog का उपयोग करने पर विचार करना चाहिए?

Debug.Print यूनिट परीक्षणों के साथ आवश्यक बयान हैं? क्या मैं अच्छी तरह से लिखित यूनिट परीक्षणों के साथ Debug.Print बयान से बच सकता हूं?

उत्तर

5

Debug.Print स्वीकार्य है, कम से कम नहीं क्योंकि वे आपके रिलीज बिल्ड में संकलित किए जाएंगे। हालांकि, इसके साथ आपका कोड "लिटरिंग" विशेष रूप से उत्पादक या उपयोगी नहीं लगता है।

कोड के किसी विशेष क्षेत्र को डीबग करते समय आप इसे जोड़ सकते हैं। एक बार जब आप दोष की पहचान कर लेंगे, तो आप केस को कवर करने के लिए यूनिट टेस्ट लिख सकते हैं, बग ठीक कर सकते हैं और फिर Debug.Print पर कॉल को हटा सकते हैं।

जो मैं कभी-कभी कोड बेस में उपयोग करता हूं और छोड़ देता हूं वह Debug.Assert है - यह एक अंतर्निहित ब्रेकपॉइंट की तरह है यदि मेरा एप्लिकेशन अपेक्षित स्थिति में नहीं है, जो स्वचालित और मैन्युअल परीक्षण दोनों करते समय केवल एक अतिरिक्त सुरक्षा नेट है ।

Debug.Print यूनिट परीक्षणों में आवश्यक नहीं है, और यूनिट परीक्षणों के लिए जोड़ा नहीं जाना चाहिए।

+0

ध्यान दें कि 'Debug.Assert' कथन भी [रिलीज़ बिल्ड में हटा दिए गए हैं] (http://stackoverflow.com/a/13383661/1497596)। (जब तक कि रिलीज कॉन्फ़िगरेशन में 'DEBUG' जोड़ा नहीं गया हो।) [' Trace.Assert'] (http://stackoverflow.com/a/6752696/1497596) का उपयोग करने पर विचार करें, यदि आप अपने निर्माण को रिलीज बिल्ड में निष्पादित करना चाहते हैं । – DavidRR

2

आपको यूनियन परीक्षणों के साथ डीबग.प्रिंट की आवश्यकता नहीं है! यूनिट परीक्षणों का बिंदु यह है कि आप स्वचालित रूप से एक संकेत प्राप्त करते हैं कि परीक्षण सफल हुआ या विफल हुआ, आपको इसके लिए डीबग प्रिंट देखने की आवश्यकता नहीं है।

NUnit एक उपयोग में आसान इकाई परीक्षण पुस्तकालय है।

ट्रेसिंग या लॉगिंग के लिए, आपको इसके लिए डीबग प्रिंट के साथ अपना कोड कूड़ा करने की आवश्यकता नहीं है। interception with Castle Windsor या एओपी का समर्थन करने वाले अन्य ढांचे का प्रयास करें।

0

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

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