2010-02-10 7 views
6

Microsoft says फ़ील्ड और गुणों को केवल मामले से अधिक भिन्न होना चाहिए। इसलिए, यदि वे वास्तव में एक ही विचार का प्रतिनिधित्व करते हैं तो उन्हें अलग कैसे होना चाहिए?फ़ील्ड और गुणों का सबसे अच्छा नाम कैसे करें


using System; 
namespace NamingLibrary 
{  
    public class Foo // IdentifiersShouldDifferByMoreThanCase  
    {   
     protected string bar; 

     public string Bar   
     {    
      get { return bar; }   
     }  
    } 
} 

वे यह कैसे दिखना चाहिए पर कोई मार्गदर्शन दे:

यहाँ क्या नहीं करना है के माइक्रोसॉफ्ट के उदाहरण है। अधिकांश डेवलपर्स क्या करते हैं?

+0

जब मैं प्रोग्रामिंग हूँ, और मैं बस अपना काम अनियमित पहचानकर्ता पीढ़ी कार्यक्रम चलाने का उपयोग जब मैं एक नए सदस्य के नाम चाहते हैं, मैं सिर्फ इसे एक के लिए पूछें और इसका इस्तेमाल करें। –

उत्तर

11

नहीं है, माइक्रोसॉफ्ट का कहना है सार्वजनिक रूप से दिखाई सदस्यों सिर्फ मामले की तुलना में अधिक से अलग करना होगा:

यह नियम केवल सार्वजनिक रूप से दृश्यमान सदस्यों पर ही आग लगता है।

(यही कारण है कि संरक्षित सदस्य भी शामिल हैं, के रूप में वे व्युत्पन्न वर्ग के लिए दिखाई दे रहे हैं।)

तो यह ठीक है:

public class Foo 
{ 
    private string bar; 
    public string Bar { get { return bar; } } 
} 

मेरा व्यक्तिगत नियम वैसे भी कुछ भी अन्य निजी क्षेत्रों की अनुमति नहीं है , जिस बिंदु पर यह कोई समस्या नहीं है।

क्या आपको वास्तव में संरक्षित फ़ील्ड की आवश्यकता है? यदि आप व्युत्पन्न कक्षाओं से इसे म्यूटेट करने में सक्षम होना चाहते हैं तो संपत्ति को संरक्षित सेटटर बनाने के बारे में कैसे?

+0

अच्छा पकड़ो! मुझे याद आया "यह नियम केवल सार्वजनिक रूप से दृश्यमान सदस्यों पर ही आग लगाता है।" पेज में मेरा सिर एक पल के लिए कताई कर रहा था। – User1

+0

इसके अलावा, मैं पूरी तरह से सहमत हूं कि फ़ील्ड कभी सार्वजनिक नहीं होनी चाहिए। यह वास्तव में मुद्दा होना चाहिए, न कि उनके पास एक ही नाम है। सार्वजनिक क्षेत्र encapsulation तोड़, मुझे यकीन नहीं है कि वे इस तरह संकलित क्यों कर सकते हैं। – User1

+0

बस एक त्वरित नोट। किसी भी प्रकार के फ़ील्ड नामकरण उपसर्ग के बिना ... कक्षा फ़ील्ड स्थानीय फ़ंक्शन वेरिएबल्स से अलग नहीं हैं जबतक कि आप उन्हें सब कुछ उपसर्ग नहीं करते। (जो वास्तव में verbose है)। एक उपसर्ग जोड़ना, जैसे कि _ या m_, आपकी कोड स्पष्टता में सुधार करने में बहुत मदद कर सकता है, और इसकी अत्यधिक अनुशंसा की जाती है। सदस्य के लिए – jrista

0

मुझे पसंद है:

protected string _Bar; 

public string Bar   
{    
    get { return _Bar; }   
}  
0

सोचो अधिकांश के साथ सदस्य चर उपसर्ग डेवलपर्स इसलिए की तरह रेखांकित:

protected string _bar; 
7

इससे कुछ डेवलपर्स घृणा में फेंक सकते हैं, लेकिन मुझे नामकरण सम्मेलन पसंद है जो मुझे एक नज़र में स्थानीय चर से सदस्य चर को अलग करने देता है।

तो, मैं अक्सर कुछ ऐसा कार्य करें:

public class Foo 
{ 
    protected string _bar; 

    public string Bar 
    { 
     get { return _bar; } 
    } 
} 

... या ...

public class Foo 
{ 
    protected string mBar; // 'm' for member 

    public string Bar 
    { 
     get { return mBar; } 
    } 
} 
+0

'एम' लगभग मुझे अपनी कुकीज़ को टॉस बनाता है। :) – User1

+0

मैं एक अंडरबार कोडर हूं। कृपया कोई बम नहीं – kenny

+0

मुझे पता है कि यह धागा पुराना है, लेकिन इस विषय पर कई चर्चाओं को पढ़ने के बाद, मैंने निजी सदस्य क्षेत्रों को अंडरस्कोर करने पर भी निपटारा किया है। एक नज़र में, यह जानने में मददगार है कि * कुछ निजी सदस्य फ़ील्ड है * केवल यह जानकर कि यह एक निश्चित आवरण नियम के तहत आता है। –

0

मैं व्यक्तिगत रूप से निम्नलिखित करता हूं:

class SomeClass 
{ 
    private static string s_foo; // s_ prefix for static class fields 
    private string m_bar;   // m_ prefix for instance class fields 

    public static string Foo 
    { 
     get { return s_foo; } 
    } 

    public string Bar 
    { 
     get { return m_bar; } 
    } 
} 

मूल रूप से मैं अपने सभी क्षेत्रों के लिए उपसर्ग के रूप में _ या m_ का उपयोग करने के लिए उपयोग करता था जब तक कि मैंने रिफ्लेक्टर के माध्यम से बहुत से माइक्रोसॉफ्ट .NET कोड के माध्यम से खुदाई शुरू नहीं की। माइक्रोसॉफ्ट एस_ और एम_ पैराडाइम का भी उपयोग करता है, और मुझे यह पसंद है। यह जानना आसान बनाता है कि जब आप फ़ंक्शन के कोड बॉडी को पढ़ रहे हों तो एक फ़ील्ड क्या है। मुझे कुछ भी इंगित करने की ज़रूरत नहीं है और टूलटिप प्रकट होने या उसके जैसा कुछ भी इंतजार नहीं करना है। मुझे पता है कि कुछ अपने क्षेत्र उपसर्ग द्वारा स्थिर या उदाहरण है।

0

यह आपके या आपकी कंपनी के संगठन के कोडिंग मानक पर निर्भर करता है।लेकिन सबसे प्रोग्रामर camelCasing का उपयोग करें या जैसे गुण पर पर फील्ड्स और PascalCasing + camelCasing को रेखांकित:

public class Foo  
{   
    protected string _bar; 

    public string Bar   
    {    
     get { return _bar; }   
    }  
} 
संबंधित मुद्दे

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