2012-11-20 43 views
1

假設您使用的是API,您需要設置一個值以啓用或禁用組件。命名約定 - isEnable vs isDisable

你寧願:

control.isEnable = true 

control.isDisable = false 

伊莫,第一個似乎更加 「直觀」,但你有任何想法,爲什麼?

回答

1

雙底片在簡單的英文和計算機代碼中都不好。

你不反對嗎?

1

標識符應該使用調用者更容易感興趣的意義。在某些情況下,這可能意味着擁有多個屬性可能乍看起來似乎是多餘的。例如,一個接口可能同時提供IsWritableIsImmutable屬性。儘管某些可寫的東西不可能是不可改變的,反之亦然,但是對象可能既不可寫也不可永不變(例如,它可能是一個實時只讀的數據視圖,可以通過其他方式進行更改)。要寫入對象的代碼應該測試IsWritable;想要知道對象是否應該防守複製的代碼應該測試IsImmutable

請注意,.net中的某些類違反了這一原則。例如,根據這個原則,測試WeakReference的有效性的屬性應該被稱爲IsDead,因爲如果WeakReference已經死亡,將會採取行動的代碼可能對引用沒有興趣,如果它是活着的,但是將採取行動的代碼如果參考文獻還活着,應該幾乎總是捕獲Target並測試它是否爲null,而不是測試WeakReference是否有效。

1

都沒有。形成問題的名稱,如isFoo意味着訪問者。

if (control.isEnabled()) 

對於字段的名稱,我更喜歡形容詞。

control.enabled = true 

即使你首選的問表,應該用過去-現在分詞形式,即isEnabled。英文中沒有任何內容被描述爲「可用」。

至於正面/負面我同意NimChimpsky 99%的時間。我現在正在構建的應用程序有另一個1%的例子,其中預期狀態爲「好」,我需要一個形容詞來描述負面情況 - 在此例中爲rejected

0

儘管我同意使用「來電者更容易感興趣」的含義,但另一種選擇是考慮將默認初始情況設置爲False,以便它在創建時已經有效並且不需要被初始化到True