2008-08-11 23 views
21

क्या वीबीएनईटी में निजी क्षेत्रों का नामकरण करने के लिए कोई आधिकारिक सम्मेलन है? उदाहरण के लिए, यदि मेरे पास 'फू' नामक एक संपत्ति है, तो मैं आमतौर पर निजी फ़ील्ड '_Foo' कहता हूं। यह Offical Guidelines:वीबीएनईटी निजी क्षेत्रों के लिए नामकरण सम्मेलन

"फ़ील्ड नामों के लिए उपसर्ग का उपयोग न करें। उदाहरण के लिए, स्थिर बनाम गैर स्थैतिक फ़ील्ड को अलग करने के लिए g_ या s_ का उपयोग न करें।"

सी # में, आप निजी क्षेत्र 'foo', संपत्ति 'फू' कह सकते हैं, और निजी क्षेत्र को कन्स्ट्रक्टर में 'this.foo' के रूप में संदर्भित कर सकते हैं। चूंकि वीबी.नेट केस असंवेदनशील है, आप यह नहीं कर सकते - कोई सुझाव?

+3

उन आधिकारिक दिशानिर्देश कक्षा पुस्तकालयों के विकास के लिए हैं, और केवल ** सार्वजनिक ** तत्वों पर निजी नहीं हैं। – MarkJ

उत्तर

20

मैं अभी भी निजी क्षेत्रों के लिए वीबी में _ उपसर्ग का उपयोग करता हूं, इसलिए मेरे पास निजी क्षेत्र और फू संपत्ति के रूप में _foo होगा। मैं इसे सी # के साथ भी करता हूं और बहुत कुछ कोड लिखता हूं। आम तौर पर मैं "इसे करने का सही तरीका" में भी पकड़ा नहीं जाता क्योंकि वास्तव में कोई "सही" तरीका नहीं है (हालांकि कुछ बहुत बुरे तरीके हैं) बल्कि इसे लगातार करने के लिए चिंतित रहें।

दिन के अंत में, संगत होने से आपके कोड को "दाएं" सम्मेलनों के किसी भी सेट का उपयोग करने से अधिक पढ़ने योग्य और बनाए रखने योग्य बना दिया जाएगा।

3

आधिकारिक दिशानिर्देश केवल यही हैं - दिशानिर्देश। आप हमेशा उनके चारों ओर जा सकते हैं। ऐसा कहा जा रहा है कि हम आमतौर पर सी # और वीबी.नेट दोनों में अंडरस्कोर वाले फ़ील्ड उपसर्ग करते हैं। यह सम्मेलन काफी आम है (और जाहिर है, आधिकारिक दिशानिर्देशों को नजरअंदाज कर दिया गया है)।

निजी क्षेत्रों तो ("मुझे" कीवर्ड के बिना संदर्भित किया जा सकता "इस" कीवर्ड के लिए सी # :)

2

मुझे नहीं लगता कि एक अधिकारी नामकरण परंपरा है करते है, लेकिन मैं देखा है कि माइक्रोसॉफ्ट माइक्रोसॉफ्ट में m_ का उपयोग करें। VisualBasic डीएल (परावर्तक के माध्यम से)।

0

मैं @lomaxx से सहमत हूं, दाएं सम्मेलन के मुकाबले टीम में लगातार होना महत्वपूर्ण है। फ्रांसेस्को Balena द्वारा

  1. Practical Guidelines and Best Practices for Microsoft Visual Basic and Visual C# डेवलपर्स के लिए एक महान पुस्तक है कि इन मुद्दों में से कई के पते:

    फिर भी, यहां कोडिंग सम्मेलनों के लिए विचार और मार्गदर्शन प्राप्त करने के लिए कई अच्छे हैं।

  2. IDesign Coding Standards (सी # WCF के लिए और के लिए)
  3. .नेट फ्रेमवर्क Source Code (VS2008 में)
0

मैं निजी क्षेत्रों के लिए अंडरस्कोर उपसर्ग का उपयोग करना पसंद। मैं विधि पैरामीटर के लिए लोअरकेस पहला अक्षर का उपयोग करता हूं। मैं तरीकों के लिए लोअरकेस कैमेलकेस पैरामीटर रखने के दिशानिर्देश का पालन करता हूं, जिसे मैं निजी क्षेत्रों के नामकरण से अधिक महत्वपूर्ण मानता हूं क्योंकि यह कक्षा के लिए एपीआई का हिस्सा है। । जैसे

Public Class Class1 

    Private _foo As String 
    Public Property Foo() As String 
     Get 
      Return _foo 
     End Get 
     Set(ByVal value As String) 
      _foo = value 
     End Set 
    End Property 

    Public Sub New(ByVal foo As String) 
     _foo = foo 
    End Sub 

End Class 

इस पद्धति का उपयोग करके आप निजी क्षेत्र के साथ किसी भी नामकरण संघर्ष और C# या VB.NET में अपने निर्माता पैरामीटर नहीं होगा।

2

मैं अभी भी निजी क्षेत्रों के लिए VB में _ उपसर्ग का उपयोग, इसलिए मैं के रूप में निजी क्षेत्र और फू संपत्ति के रूप में _foo होगा। मैं इसे सी # के साथ भी करता हूं और बहुत ज्यादा कोड लिखता हूं। आम तौर पर " " में वास्तव में मुझे "दाएं" तरीके से नहीं मिला है (हालांकि कुछ बहुत खराब तरीके हैं) लेकिन इसके साथ चिंतित हैं इसे लगातार कर रहा है।

मुझे स्पष्टीकरण और स्थिरता के लिए "_" से बेहतर कुछ भी नहीं मिला है। विपक्ष में शामिल हैं:

  • Not CLS compliant
  • खो जाना जाता है जब वीबी मेरी आईडीई भर में क्षैतिज लाइनों ड्रॉ

मैं संपादक में उन लोगों को बंद करके लाइनों के आसपास मिलता है, और भी सोचने के लिए नहीं की कोशिश सीएलएस अनुपालन के बारे में बहुत कुछ।

+6

सीएलएस अनुपालन निजी क्षेत्र के नामों की परवाह नहीं करता है। –

3

आपके द्वारा लिंक किए गए डिज़ाइन दिशानिर्देश विशेष रूप से बताते हैं कि वे केवल स्थिर सार्वजनिक और संरक्षित फ़ील्ड पर लागू होते हैं। डिजाइन दिशानिर्देश ज्यादातर सार्वजनिक एपीआई डिजाइन करने पर ध्यान केंद्रित करते हैं; आप अपने निजी सदस्यों के साथ क्या करते हैं आप पर निर्भर करता है। मैं सकारात्मक नहीं हूं लेकिन मुझे अपेक्षाकृत आश्वस्त है कि जब संकलक सीएलएस अनुपालन के लिए जांच करता है तो निजी सदस्यों पर विचार नहीं किया जाता है, क्योंकि केवल सार्वजनिक/संरक्षित सदस्य वहां खेलने के लिए आते हैं (विचार यह है कि, "क्या होगा यदि कोई ऐसी भाषा का उपयोग करता है जो _ चरित्र आपकी लाइब्रेरी का उपयोग करने की अनुमति नहीं देता है? "यदि सदस्य निजी हैं, तो जवाब" कुछ भी नहीं है, उपयोगकर्ता को इन सदस्यों का उपयोग करने की आवश्यकता नहीं है। "लेकिन यदि सदस्य सार्वजनिक हैं तो आप परेशानी में हैं।)

उसने कहा, मैं गूंज कक्ष में जोड़ने जा रहा हूं और बताता हूं कि जो कुछ भी आप करते हैं, यह महत्वपूर्ण होना महत्वपूर्ण है। मेरे नियोक्ता को यह अनिवार्य है कि सी # और वीबी दोनों में निजी फ़ील्ड _ के साथ prefixed हैं, और क्योंकि हम सभी इस सम्मेलन का पालन करते हैं, किसी और द्वारा लिखित कोड का उपयोग करना आसान है।

0

मैं मानता हूं कि सबसे महत्वपूर्ण यह नहीं है कि शैली किस प्रकार उपयोग करती है लेकिन यह लगातार है।

ने कहा कि के साथ, निजी क्षेत्रों के लिए नए एमएस/नेट स्टाइल _fooVar हो जाता है (एक camelCased नाम और उसके बाद अंडरस्कोर)

5

यह व्यक्तिगत पसंद है, वहाँ हालांकि कुछ भेद होने के लिए व्यापक समर्थन। सी # में भी मुझे नहीं लगता कि एक व्यापक रूप से इस्तेमाल किया जाने वाला सम्मेलन है।

Jeff Prosise कहते

व्यक्तिगत पसंद की बात है मैं एक अंडरस्कोर [सी # में] के साथ आम तौर पर उपसर्ग निजी क्षेत्रों ... इस सम्मेलन नेट ढांचे में काफी एक बहुत प्रयोग किया जाता है, लेकिन यह नहीं किया जाता है भर।

से। NET Framework Design Guidelines 2 संस्करण पेज 73.

Jeffrey Richter

मैं अपने सभी क्षेत्रों को निजी बनाने का कहना है और मैं के साथ "M_" और "s_" [सी # में]

के साथ अपने स्थिर क्षेत्रों मेरी दृष्टांत फ़ील्ड उपसर्ग

से। NET Framework Design Guidelines द्वितीय संस्करण पृष्ठ 47. एंथनी मूर (BCL team) भी सोचता है कि "m_" और "s_" का उपयोग करने योग्य है, पृष्ठ 48.

2

वीबी.नेट 4 में।0, आप में से अधिकांश शायद जानते हैं कि आप स्पष्ट रूप से अपने संपत्ति घोषणाओं के लिए getters और setters लिखने के लिए इस प्रकार की जरूरत नहीं है:

Public Property Foo As String 
Public Property Foo2 As String 

वीबी स्वचालित रूप से निजी सदस्य चर _Foo और _Foo2 कहा जाता है बनाता है। ऐसा लगता है कि माइक्रोसॉफ्ट और वीएस टीम ने _ सम्मेलन अपनाया है, इसलिए मुझे इसके साथ कोई समस्या नहीं दिख रही है।

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