जब एक क्षेत्र (यहाँ एक bool करने के लिए गलत) करने के लिए डिफ़ॉल्ट डिफ़ॉल्ट-मान निर्दिष्ट, FxCop का कहना है:FxCop क्यों फ़ील्ड को डिफ़ॉल्ट मान पर प्रारंभ करना गलत लगता है?
Resolution : "'Bar.Bar()' initializes field 'Bar.foo'
of type 'bool' to false. Remove this initialization
because it will be done automatically by the runtime."
अब, मैं int a = 0
या bool ok = false
के रूप में है कि कोड कुछ अतिरेक पेश कर रहा है पता है, लेकिन मेरे लिए यह लगता है एक बहुत ही अच्छा कोड-अभ्यास, एक ऐसा जो कि मेरे शिक्षकों ने मेरी राय में ईमानदारी से जोर दिया।
न केवल प्रदर्शन जुर्माना बहुत कम है, अधिक महत्वपूर्ण बात यह है कि डिफ़ॉल्ट पर भरोसा करते हुए प्रत्येक प्रोग्रामर के ज्ञान पर डिफ़ॉल्ट रूप से आने वाले प्रत्येक डेटाटाइप पर कोड के टुकड़े का उपयोग करने के लिए भरोसा किया जाता है। (डेटटाइम?)
गंभीरता से, मुझे लगता है कि यह बहुत अजीब है: बहुत ही प्रोग्राम जो आपको सभी स्पष्ट गलतियों से बचाने के लिए रक्षा कर सकता है, केवल कुछ बढ़ने के प्रदर्शन के लिए एक बनाने का सुझाव दे रहा है? (हम प्रारंभिक कोड के बारे में बात कर रहे हैं, केवल एक बार निष्पादित किया गया है! प्रोग्रामर जो बहुत अधिक परवाह करते हैं, निश्चित रूप से प्रारंभिकरण को छोड़ सकते हैं (और शायद सी या असेंबलर :-) का उपयोग करना चाहिए)।
क्या FxCop यहां एक स्पष्ट गलती कर रहा है, या इसके लिए और भी कुछ है?
दो अपडेट:
यह सिर्फ मेरी राय है, लेकिन क्या मैं विश्वविद्यालय (बेल्जियम) में सिखाया गया है नहीं है। ऐसा नहीं है कि मैं argumentum ad verecundiam का उपयोग करना चाहता हूं, लेकिन यह दिखाने के लिए कि यह सिर्फ मेरी राय नहीं है। और के विषय में है कि:
मेरे क्षमायाचना, मैं सिर्फ इस एक पाया:
Should I always/ever/never initialize object fields to default values?
मुझे नहीं लगता कि प्रारंभिकरण को कम करने से भी एक प्रदर्शन लाभ है। –
मैं मार्टिनो से सहमत हूं, लेकिन मुझे आपका प्रश्न पसंद है! –
@ मार्टिन्हो फर्नांडीस: इसे छोड़ने के लिए एक प्रदर्शन लाभ है - मेरा उत्तर और आलेख संदर्भित देखें। –