2010-02-10 29 views
6

Microsoft says字段和屬性的區別不僅僅是大小寫。所以,如果他們真的代表了同樣的想法,他們應該如何改變?如何最好地命名字段和屬性

這裏有什麼不能做微軟的例子:


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

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

他們給這個看起來應該沒有指導。大多數開發者做什麼?

+0

我只是用我的得心應手隨機標識符生成程序運行,而我編程,當我想要一個新成員的名字,我只是問一個並使用它。 – 2010-02-25 02:24:20

回答

11

不,微軟表示公開可見的成員必須由不僅僅是情況更不同:

此規則僅在公開顯示的成員上觸發。

(這包括受保護的成員,他們對派生類可見。)

所以這是好的:

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

我個人的原則是,不要讓任何其他私人領域無論如何在這一點上,這不是問題。

你真的需要保護字段嗎?如果你希望能夠從派生類中改變它,那麼如何讓該屬性擁有受保護的setter?

+0

好抓!我錯過了「這個規則只針對公衆可見的成員。」在頁面中。我的頭在那裏旋轉了一會兒。 – User1 2010-02-11 00:13:40

+0

另外,我完全同意領域永遠不應該公開。這應該是真正的問題,不是他們有相同的名字。公共領域破壞封裝,我不知道爲什麼他們甚至可以這樣編譯。 – User1 2010-02-11 00:19:39

+0

只是一個簡短的說明。沒有任何類型的字段命名前綴...類字段與本地函數變量無法區分,除非您將它們全部加上前綴。 (這真的很冗長)。添加前綴(如_或m_)可極大地幫助您提高代碼清晰度,並強烈建議您使用它。 – jrista 2010-02-25 02:07:26

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

'm'爲會員差點讓我折騰我的餅乾。 :) – User1 2010-02-11 00:15:19

+0

我是一個underbar編碼器。沒有炸彈請。 – kenny 2010-02-25 02:04:08

+0

我知道這個帖子是舊的,但在閱讀了關於這個主題的大量討論之後,我還解決了強調私人成員字段的問題。一眼就知道某物是一個私人會員領域,而不是隻知道它屬於一定的套管規則。 – 2012-05-07 15:06:08

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_作爲我所有字段的前綴,直到我開始通過反射器搜索大量Microsoft .NET代碼。微軟也使用s_和m_範例,我喜歡它。當您閱讀函數的代碼體時,它可以很容易地確切知道字段是什麼。我不必指向任何東西,等待工具提示出現或類似的東西。我知道某些東西是靜態還是簡單地通過字段前綴來實例化。

0

這取決於你或你公司的組織編碼標準。但大多數程序員使用駝峯規則或下劃線+上的字段和PascalCasing駝峯規則像屬性:

public class Foo  
{   
    protected string _bar; 

    public string Bar   
    {    
     get { return _bar; }   
    }  
} 
相關問題