2008-09-30 48 views
4

您可以對類成員,靜態對象,全局對象和結構有不同的命名約定。其中的一些例子如下。大範圍函數變量的一個好的命名約定是什麼?

_member 
m_member 

或者在Java情況下,使用this.member

但是有沒有傳達當一個變量具有完整的功能範圍或短的壽命範圍內的任何好的技術或功能的變量的作用域的命名約定?

void MyFunction() 
{ 
    int functionScopeVariable; 

    if(true) 
    { 
    //no need for function variable scope naming convention 
    } 
} 
+0

是的,所以對於你的例子,如果一個var的範圍只會在wF/MyFunction()中,我們的約定就是命名你的var l_functionScopeVar ... 我注意到它使它更容易閱讀別人的代碼w /前綴,即使他們只是本地臨時變量... – kafuchau 2008-09-30 15:24:40

回答

0

我們傾向於在我們的「本地」函數中使用l_前綴。而且,這很好。

+0

所以,你的意思是,變量具有函數範圍的例子函數參數在他們開始時追加一個「l_」 。只是爲了澄清? – Chad 2008-09-30 04:51:42

4

一種方法是遵循指導,變量的範圍越大,名稱越長。通過這種方式,全局變量可以得到很長的描述性名稱,而像循環索引變量這樣的受限制範圍的事物可以像單個字母一樣小。

+0

我自然而然地做到了這一點,直到現在從未發現它。 +1 – 2008-12-22 18:58:25

3

我用全局的,靜態的成員變量前綴或特殊的命名約定,所以我沒有對當地人使用前綴。我更喜歡使用短局部變量名稱,特別是對於循環變量。

0

這真的都歸結爲任何語言的風格指南,如果有任何建議。

1

還有,你不應該有「大範圍的功能」,所以不應該有與命名問題的爭論 - 只需使用「小範圍功能」變量命名約定。

0

我想任何事情都可以,只要它表達了它的使用意義。

0

我寧願保持它的簡單,我用:

m_varname - Class member variables 
g_varname - Global variables 
+0

是的,我明白了。但是,如果函數變量在if語句中具有完整的函數範圍或範圍有限, – Chad 2008-09-30 04:52:28

+0

我沒有區分它們,我從來沒有使用與函數作用域和有限作用域相同的var名稱,它往往使事情太混亂。 – KPexEA 2008-09-30 19:24:40

9

我實際上是在鼓勵委派這個任務交給你使用IDE /編輯器。

不,我實際上沒有談論命名變量,這仍然是最好的人類完成。但是這種命名策略的基本任務是向您顯示任何名稱所代表的變量類型。

幾乎每一個IDE稱職的可以定義不同的樣式(顏色,字體,字體類型,...),以不同的變量類型(例如成員,靜態成員,參數,局部變量,...),所以讓IDE告訴你它實際上是什麼類型的變量,使你不必每次都鍵入那些(否則無用的)前綴或後綴。

所以我的建議是:使用沒有任何前綴或後綴的有意義的名稱。

1

從MSFT等風格指南爲私有實例字段中的指導_memberName(與「_"前綴駱駝符號),這也是最近許多微軟教程的源代碼中使用的約定。

我用因爲它更短,而不是匈牙利語,並且R#支持它作爲私有實例字段的默認規則。

我也喜歡它,因爲它有點模糊了來自Intellisense的私有字段,因爲它應該,因爲您應該更喜歡首先訪問您的公共會員。如果我想訪問屬性名稱,我開始輸入「Na」,第一個建議是Pascal公用實例屬性名稱。在極少數情況下,我想直接訪問私有字段,這迫使我做出有意識的決定,開始鍵入「_」,然後在Intellisense彈出窗口中獲得我的私有字段的完整列表。

我也看到指導說它應該是_MemberName,如果它是名爲MemberName的公共屬性(Pascal-case notation前綴爲「_」)的支持字段我個人不喜歡那樣,因爲我認爲首都M是多餘的,增加了不必要的擊鍵,並且不添加任何額外的信息。

0

我使用了我用於類成員的相同約定。 IDE應該照顧你的聲明。如果一個函數很大並且令人困惑,那麼它就變成了一個箴言,但是有一個問題需要解決。

相關問題