2012-11-30 151 views
6

我不是英語母語的人,所以我對命名約定的函數返回布爾值感到困惑。什麼是返回布爾值的函數的命名約定?

我知道下面的函數名稱是常規名稱:

bool is_valid(); 
bool is_sorted(); 
bool is_empty(); 
bool has_children(); 
bool can_draw(); 

不過,我不知道是否有另一個函數名,這比「是,是,可以,有等」,其他的動詞開始也常規如下:

bool TryToCloseWindow(); // check to see if the user tries to close the window 
bool IntendToCloseWindow(); // as above 
bool FileExists();   // check to see if the file exists 

如果您是母語爲英語的人和程序員,您認爲這三個函數的名稱是常規的嗎?

+1

有針對衍生自C語言沒有固定的命名規則(例如像C++和Java) 。這對個人或組織來說非常重要。不同的人/組織有不同的命名風格。 –

+0

我想知道最後三張看起來是否自然。 – xmllmx

+1

WIN32 API有幾個與前三個類似的函數。但是,如果您正在使用自己的代碼,那麼完全取決於您如何命名和格式化標識符。選擇一種你感覺舒適的風格,你甚至可以改變項目之間的風格。只要保持風格在一個項目中一致。 –

回答

7

對您的標題問題的簡短回答:不同。有很多不同的約定,甚至可能比程序員更多的約定。有些約定希望在每個bool返回函數名稱的開頭都有一個「is」,而其他約定不會。並且不要打擾關於下劃線,CamelCase,lowerCamelCase等的質疑/爭論。只要你堅持你選擇的那個,它們都是同樣可讀的。

我認爲什麼重要的是,函數名稱表示他們在做什麼。函數返回布爾經常出現在條件或循環的上下文中。所以我認爲最好把你的名字放在這樣的背景下,看看它聽起來是否正確。例如if (fileExists()) { /* ... */ }聽起來不錯。 tryToCloseWindow()聽起來像「嘿,編譯器/程序,請關閉那個窗口」。你的評論給出的提示不是你想要的。也許使用'userIsClosingWindow()'或類似的東西。 「打算」不是我將用於函數名稱的動詞。打算意味着你想要做某事,你有這個想法,你正在考慮它,但沒有真正的行動。所以,如果打算關閉一個窗口,只是做它,或離開它。不需要告訴編譯器「嘿,我打算關閉那個窗口,在幾行內,也許我會真的做到這一點......」。而且您無法確定用戶是否打算關閉窗口。除非他插上了微軟摸透別人的心思設備到一個USB端口,您可以訪問的API,給我一個鏈接,請,謝謝;)

+0

非常感謝您的解釋。 – xmllmx

1

一般來說這應該是命名慣例類似下面開始一個小寫。

bool tryToCloseWindow(); // check to see if the user try to close the window 
bool intendToCloseWindow(); // as above 
bool fileExists();   // check to see if the file exists 
0

如果您使用的名稱如isValid()這更有意義。

它將返回值truefalse所以對於if(isValid()) ...,任何人都可以輕鬆理解概念。

通常並非所有的組織遵循相同的命名約定。它依賴於公司,開發者和開發者。

+0

我只是想知道最後三個是否是傳統的。 – xmllmx

+0

如果你這樣使用 bool IsTryToCloseWindow(); bool IsIntendToCloseWindow(); bool IsFileExists(); 那麼它更傳統。 – andy

+2

這些名稱在語法上不正確。 – xmllmx