2011-03-30 11 views
26

क्या विजुअल स्टूडियो में ऑब्जेक्ट प्रारंभकर्ता कोड को चरण-दर-चरण डीबग करने का कोई तरीका है?ऑब्जेक्ट प्रारंभकर्ता कोड को डीबग कैसे करें?

उदाहरण: वी.एस. के माध्यम से यह कदम करने में असमर्थ हो रहा है

return new Veranstaltung() 
      { 
       ID = tblVeranstaltung.VeranstaltungsID, 
       Titel = tblVeranstaltung.Titel, 
       KursNummer = tblVeranstaltung.Kursnummer, 
       ErsterTermin = tblVeranstaltung.ersterTermin, 
       Dauer = tblVeranstaltung.schulungsTage, 
       StartZeit = tblVeranstaltung.BeginnZeit, 
       EndZeit = tblVeranstaltung.Endzeit, 
       KostenNettoValue = tblVeranstaltung.PreisNetto ?? default(decimal), 
       IsLastMinute = tblVeranstaltung.lastMinute == 1, 
       IsVerkuerzt = tblVeranstaltung.istVerkuerzt == 1, 
       IsGeschlossen = tblVeranstaltung.istGeschlosseneVeranstaltung == 1, 
       IsIntern = tblVeranstaltung.istInterneVeranstaltung == 1, 
       StandortID = Convert.ToInt32(tblVeranstaltung.StandortID), 
       LastMinuteRabatt = tblVeranstaltung.lastMinuteRabatt ?? default(decimal) 
      }; 

कभी कभी मैं (जब पूर्णांक में रूपांतरण विफल रहता है उदाहरण के लिए) कोड के इस प्रकार में त्रुटियों हो और, यह सिर्फ के लिए एक त्रुटि फेंकता पूरी लाइन और मुझे यह पता लगाने की ज़रूरत है कि कौन सी प्रारंभिक विफल रही।

क्या इसे डीबग करने का कोई आसान तरीका है या क्या यह बड़ी या जटिल प्रारंभिकताओं के लिए ऑब्जेक्ट प्रारंभकर्ता से बचने के लिए बेहतर है?

मैं वीएस 2010 और सी # 4.0 का उपयोग कर रहा हूं।

उत्तर

10

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

7

या क्या यह बड़े या जटिल प्रारंभिकताओं के लिए ऑब्जेक्ट प्रारंभकर्ता से बचने के लिए बेहतर है?

हां, इसे बनाए रखना मुश्किल हो जाता है (और डीबग)।

4

ऑब्जेक्ट प्रारंभकर्ताओं के लिए डिबगिंग समर्थन विजुअल स्टूडियो 2010 में बहुत अच्छा नहीं है। यह उपयोग करने से बचने के लिए व्यावहारिक हो सकता है उस कारण के लिए बड़े या जटिल प्रारंभिकताओं के लिए ऑब्जेक्ट प्रारंभकर्ता, लेकिन मैं बड़े या जटिल (उदाहरण के लिए नेस्टेड) ​​ऑब्जेक्ट प्रारंभिकताओं को अपने आप में और खराब डिजाइन विकल्प का उपयोग करने पर विचार नहीं करता हूं।

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

इस शैली में कोडिंग करते समय एक नल-सुरक्षित ड्रेफरेंस ऑपरेटर भी बहुत मदद करेगा, लेकिन यह एक और विषय है! उम्मीद है कि, विजुअल स्टूडियो का भावी रिसाव इन उपयोगी संरचनाओं के डीबगिंग में सुधार कर सकता है।

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