2010-09-01 2 views
6

सिल्वरलाइट और WPF, गुण है कि बूलियन मान रहे हैं लगी होती हैं दौरान (almost all) है, उदाहरण के लिए:सक्षम या सक्षम है?

IsEnabled
IsTabStop
IsHitTestVisible

अन्य सभी Microsoft चौखटे में (Winforms, बीसीएल, एएसपी.नेट) का उपयोग नहीं किया जाता है। क्या उन्होंने अपनी टीम को मूल नामकरण सम्मेलन से दूर जाने के लिए प्रेरित किया - क्या यह एक विकास या मिस-नेमिंग है जिसे छड़ी करना पड़ा?

उत्तर

13

व्यक्तिगत रूप से, मैं हमेशा कुछ ऐसे अर्थों के साथ बूलियन मानों को उपसर्ग करने का प्रयास करता हूं जो थोड़ा अधिक अर्थ जोड़ता है (है, है, कर सकते हैं, आदि)। मेरे उपयोग निम्न Microsoft दिशा निर्देशों से आता है: एक सकारात्मक वाक्यांश ( CantSeek के बजाय CanSeek) के साथ

Do नाम बूलियन गुण। वैकल्पिक रूप से, आप उपसर्ग बुलीयन गुणों के साथ है, कर सकते हैं, या है, लेकिन केवल मान जोड़ता है।

MSDN - Names of Type Members

मैं नहीं मानता कि यह मामला हमेशा ऐसा हमेशा नहीं था। उन प्रथाओं को वापस .NET 2.0 की तारीख है। इससे पहले, चीजें उचित खेल थीं। फ्रेमवर्क के नए संस्करणों में उन नामों को साफ करना, हालांकि, सभी प्रकार के सिरदर्द का कारण बनता है (इसलिए कुछ फ्रेमवर्क कोड सम्मेलन का उपयोग करता है और कुछ नहीं करता है)।

यह निश्चित रूप से चीज़ों को और अधिक पठनीय बनाता है। यहां तक ​​कि अपने प्रश्न से एक उदाहरण का उपयोग कर। आपको कौन सा चाहिये?

// ambiguous naming, could mean many things 
myTab.TabStop 

या

// definitely a true/false value 
myTab.IsTabStop 
+1

यह दिलचस्प है कि यह एक नई सिफारिश है, बताती है Winforms के उपसर्ग नहीं है। –

+1

@ क्रिस एस - पहली बार सब कुछ ठीक करना मुश्किल है। यह टैबलेट के लिए .NET 1/1.1 –

+0

से सीखे गए पाठों में से एक हो सकता है, "है" स्पष्ट मान जोड़ता है: संपत्ति का मूल्य आपको बताता है कि कुछ टैब स्टॉप है या नहीं; मान एक टैब स्टॉप नहीं है। सक्षम के लिए, जोड़ा मूल्य अधिक सूक्ष्म है। "है" यहां कुछ अंतर है और "सक्षम" के बीच अंतर है, जो कुछ भी होगा, शायद ऑब्जेक्ट की प्रतिलिपि बनाई गई हो। एक और जोड़ा मूल्य यह है कि ऑब्जेक्ट अंग्रेजी की तरह अधिक पढ़ता है: myObject.IsEnabled। –

3

Is उपसर्ग इस तथ्य के बारे में एक संकेत दे सकता है कि संपत्ति में केवल get एक्सेसर है, और, थॉमस और राहेल ने कहा, यह एक बूल है। यदि आप get और set एक्सेसर्स दोनों को लागू करना चाहते हैं तो उपसर्ग छोड़ें और इसका प्रकार बूल के अलावा अन्य है।

+5

मैं सहमत नहीं हूँ, मैं जानता हूँ कि मैं कुछ वस्तुओं पर IsEnabled निर्धारित किया है पहले। ऐसा शायद इसलिए है क्योंकि यह एक बूलियन मान है और ऐसा कुछ नहीं जिसे आप किसी भी मूल्य पर सेट कर सकते हैं। – Rachel

+5

मैं उस स्पष्टीकरण से सहमत हूं, लेकिन WPF में कई पढ़ने/लिखने वाले गुणों में यह उपसर्ग है ...मुझे लगता है कि यह दिखाने का इरादा है कि संपत्ति एक बूल –

+0

@ थॉमस और राहेल है - वास्तव में मैं यही कहना चाहता था, लेकिन मैं कुछ और लिखने में कामयाब रहा :) :) – devnull

3

Is उपसर्ग आधिकारिक माइक्रोसॉफ्ट फ्रेमवर्क डिजाइन दिशानिर्देश का हिस्सा (इस का मतलब यह नहीं है कि सभी एमएस उत्पादों यह का पालन ...) है।

व्यक्तिगत रूप से, यदि यह लगातार उपयोग किया जाता है, तो मुझे यह उपयोगी लगता है। यह तुरंत आपको बताता है कि एक संपत्ति एक बूलियन है। आप इसे उपयोग कर सकते हैं या नहीं, सबसे महत्वपूर्ण बात यह कि इसके बारे में एक समान होना चाहिए है ...

थॉमस