5
A
回答
7
它已經有一段時間,因爲我最後再閱讀代碼完成,但我依稀記得麥康奈爾解決這個,的一句「轉折conherence」跳進我的腦海。簡單地說,
void f(int x, int y, bool b)
與
void f1(int x, int y)
void f2(int x, int y)
往往是一個選擇,這取決於f
如何相似或不同將true
下的行爲與false
,它可能是有意義的掰成兩個函數,給他們不同的名字。通常第三種選擇更好,即將bool
更改爲兩值枚舉,其中枚舉名稱明確區分。
關鍵是看看電話網站,看看它的意思是否清楚,只是通過閱讀代碼。如果你很想把一個評論對每一個布爾調用點:
f(3, 4, true /* absoluteWidgetMode */)
,被呼叫的網站通常與布爾常數打電話,這是一個強烈的氣味,你應該把它分解成多種功能。
4
布爾參數意義大部分的時間,基本上值得同樣的批評幻數做的。您只有查看函數調用,纔有可能不瞭解所做的事情。
因此,即使爲非常相似的代碼(追加/覆蓋文件)提供布爾參數很方便,請將其保留爲內部私有,並且不要讓它在界面中可見。
相反,總是迫使程序員是明確:
使用枚舉給予了區別有意義的說明或只使用獨立的功能。
比較:
WriteFile(path, "Hello, World", true)
與
WriteFile(path, "Hello, World", FileMode.Append)
或者乾脆
AppendFile(path, "Hello, World")
相關問題
- 1. 布爾函數作爲輸入參數
- 2. 多個布爾函數
- 3. 將布爾函數列表應用到Haskell中的兩個參數中
- 4. VB.Net布爾參數
- 5. 發佈參數參數包來調用兩個函子
- 6. Vim布爾函數
- 7. SML:布爾函數
- 8. Javascript:Concat布爾函數
- 9. 如何將布爾函數數組合併成一個布爾函數?
- 10. 如何定義一個布爾函數參數是可選的?
- 11. 多個布爾變量作爲函數參數
- 12. 如何在函數中將這個布爾參數加入
- 13. 布爾作爲參數/參數?
- 14. 返回帶有一個或兩個參數的<=的函數
- 15. TypeError:布爾函數不是函數
- 16. C++添加兩個布爾型數組
- 17. jUnit測試兩個布爾數組
- 18. 錯誤:布爾運算符==必須正好有兩個參數
- 19. Objective-C的傳遞兩個參數爲布爾方法
- 20. C#重構:布爾參數
- 21. 獲取SWF布爾參數
- 22. 腳本的布爾參數
- 23. Python的布爾參數3
- 24. 布爾參數步驟
- 25. Jbehave布爾命名參數
- 26. 蟒蛇與布爾和多個參數
- 27. 遞歸函數 - 兩個函數或最後一個可選參數
- 28. 如何將布爾函數簡化爲兩個邏輯門?
- 29. 從描述一個布爾函數
- 30. 返回一個布爾函數
是什麼,即使是什麼意思?你能提供一個代碼示例嗎? – NullUserException 2010-10-02 17:58:29
是的,有很多規則。所有這些都是矛盾的,所有這些都是個人(或團隊)偏好的問題。我個人的規則很簡單:如果我覺得需要給方法添加註釋或者調用方法,我需要改變它。 – Tergiver 2010-10-02 18:02:24