2009-05-09 17 views

उत्तर

3

मुझे नहीं लगता कि यह एक बुरा अभ्यास है क्योंकि डिफ़ॉल्ट मान कुछ भाषा में काम कर रहे डेवलपर को सीखना चाहिए/सीखने के लिए मजबूर होना चाहिए।

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

11

नहीं, मुझे लगता है कि डिफ़ॉल्ट मानों पर भरोसा करना ठीक है। स्पष्ट रूप से उन्हें असाइन करने से कोड को अव्यवस्थित कर दिया जाएगा। साथ ही, इसका लाभ उन क्षेत्रों को अलग करना आसान बनाता है जिन्हें आप गैर-डिफ़ॉल्ट मान निर्दिष्ट करते हैं।

+2

मैं सहमत हूं। मेरे मस्तिष्क को संसाधित करने के लिए स्क्रीन पर कम जानकारी है, बेहतर। – Vadim

7

मैं हमेशा उन्हें अंदर रखता हूं, क्योंकि यह साबित करता है कि आपने सोचा है कि उन सदस्यों के प्रारंभिक मूल्य क्या होना चाहिए।

bool isCool; 

का मतलब "मुझे पता है कि यह स्टार्टअप पर अच्छा नहीं है" या इसका मतलब यह हो सकता है कि आपने इसके बारे में नहीं सोचा था।

bool isCool = false; 

स्पष्ट रूप से एक जानबूझकर निर्णय है।

2

यह ज्यादातर व्यक्तिपरक है, imho।

मेरे लिए, यह भी "शब्दशः" है, भले ही यह डिफ़ॉल्ट मूल्य स्पष्ट रूप से घोषित किया गया हो ... फिर भी कोड पढ़ने के दौरान यह मुझे थोड़ा सा धीमा कर देता है और चलिए इसका सामना करते हैं ... यह अनावश्यक है।

मुझे यह भी लगता है कि यह कोड में अक्सर होता है क्योंकि यह डिफ़ॉल्ट मानों को नहीं जानता है या कुछ तर्कहीन डर है कि वे सी # 5.0 में सही के लिए बूल का डिफ़ॉल्ट मान बदल सकते हैं।

0

मैं मूल्यों को स्पष्ट रूप से देना पसंद करता हूं। यह मस्तिष्क पर कम तनाव को स्मृति से डिफ़ॉल्ट मान लोड करने का प्रयास करता है। बेहतर उन्हें सटीक है। कोई नुकसान नहीं किया।

string name = string.Empty; 

या

Guid userID = Guid.Empty; 
+1

बात यह है कि स्ट्रिंग और गुइड के लिए डिफ़ॉल्ट मान स्ट्रिंग नहीं हैं। लक्षण और guid.Empty, यह शून्य है। इसलिए यदि आप चाहते थे कि वे आपके साथ शुरू करने के लिए "खाली" हों, उन्हें स्पष्ट रूप से सेट करना होगा। –

+0

स्ट्रिंग के लिए मैं आपसे सहमत हूं, यह शून्य है। ग्रिड के लिए यह actuall Guid.Empty है, यदि आप "uninitialized" चर के मान की जांच करते हैं। – User

+0

यही कारण है कि इसे स्पष्ट रूप से लिखना बेहतर है। आप इसे इस तरह से जानते हैं, अगले लोग इसे अलग-अलग जानते हैं। भ्रम लाने में क्या बात है? – User

1

से पहले सभी सवालों के जवाब के लिए एक विकल्प है, मैं एक निर्माता में उन लोगों के प्रारंभिक मान डाल करने के लिए उपयोग करते हैं की तरह है, इसलिए मैं चर के initializacion के लिए बाहर की तलाश में परेशान नहीं करते यह होना चाहिए।

class Node 
{ 
     int red; 
     int green; 
     int blue; 

     bool grayscale; 

     Node next; 
     public Node() { 
      red = 0; 
      green = 0; 
      blue = 0; 

      grayscale = false; 
      next = null; 
     } 
} 
1

डेवलपर्स जानने क्या आदिम डेटा प्रकार के लिए डिफ़ॉल्ट मान रहे हैं के लिए जिम्मेदार हैं, इसलिए वे सख्ती से आवश्यक नहीं हैं। हालांकि, जैसा कि कुछ ने संकेत दिया है, यह साबित करता है कि आपने इस मुद्दे के बारे में सोचा है।

इसके अलावा, आपके कोड में परिवर्तनीय प्रकारों का भारी बहुमत आपके द्वारा बनाए गए कस्टम प्रकार होंगे। डेवलपर्स यह जानने के लिए ज़िम्मेदार नहीं हैं कि आपके कस्टम एनम का डिफ़ॉल्ट मूल्य क्या है। अच्छे संचार की आवश्यकता है कि आप इन मामलों में डिफ़ॉल्ट मान निर्दिष्ट करें। चूंकि हम आदत के प्राणी हैं, इसलिए अपने चर को हमेशा शुरू करने की आदत स्थापित करना बेहतर है। इससे कोई फर्क नहीं पड़ता कि आप कक्षा के स्तर पर या अपने कन्स्ट्रक्टर में ऐसा करते हैं जब तक कि आप अपने दृष्टिकोण में सुसंगत न हों।

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