2014-09-03 127 views
0

(questionn拼寫錯誤的目的:計算器不允許字的標題是「問題」)布爾命名約定:語句還是questionn?

考慮屬性SomethingHasChanged

這可以理解爲一個聲明,SomethingHasChanged!,或者一個問題,SomethingHasChanged?

布爾命名的約定(C#)是什麼?作爲陳述或問題?

背景

客戶我工作的所有代碼,是用荷蘭語撰寫。在荷蘭語中,這兩種形式在英語中並不存在細微差別。因此,我們需要在兩種形式之間做出決定。例如:ErIsIetsGewijzigd! vs IsErIetsGewijzigd?

+2

[代碼重審的問題](http://codereview.stackexchange.com/questions/30914/boolean-naming-convention) – Kilazur 2014-09-03 07:31:54

+0

恕我直言'SomethingHasChanged'應該被讀作聲明。如果我想問問題,我想寫:'HasSomethingChanged()'。 – 2014-09-03 07:32:20

+1

這兩個聽起來像是很可怕的名字,因爲你對我說的原因,不知道你在哪裏使用這個,但通常你不需要一個布爾值來說一些改變,你使用事件。此外,我傾向於只讀代碼儘可能接近純英文,因此它否定了這個問題。所以它變成了「如果我的項目已經改變」 – Sayse 2014-09-03 07:32:44

回答

2

布爾變量或屬性是表達式的結果,因此它不是問題,而是語句。

相反,如果您提出的問題需要操作來回答,那麼它應該是一種方法,可以這樣命名。

0

這取決於您是要傳達您閱讀狀態還是根據請求確定它。屬性bool HasChanged {get; set; }可以被調用兩次,它應該導致相同的存儲值。然而,方法bool HasChanged()傳達它將根據需要爲您確定它。

最後,因爲我也是荷蘭人,所以ErIsIetsGewijzigd聽起來像一個命令,因此當我讀它時,它應該設置屬性,即ErIsIetsGewijzigd(true);

2

許多布爾屬性開始IsHas,如:

this.IsRed = this (object) is red 
this.HasChildren = this (object) has children 

您的名字並沒有真正適合這個約定好:

this.SomethingHasChanged = this (object) has something that has changed. 

要匹配這個約定,我會重命名財產IsDirty或類似。