我和一位初級開發人員進行了一次代碼審查,並討論了關於布爾人的問題,他在Robert Martin的一本名爲「Clean Code」的書中閱讀了一些內容。他說,這本書解釋說,在參數中使用布爾值是不好的做法,並使代碼更難以測試。具體來說,我們正在談論的代碼類似於下面:將布爾值作爲方法參數是不好的做法嗎?
public static void setActivateValidation(Boolean activate)
{
System.validation = activate;
update System.validation;
}
,他正在宣稱是一個非常不好的做法說法相反,它應該是2層的方法,如:
public static void turnOffValidation()
{
System.validation = false;
update System.validation;
}
public static void turnOnValidation()
{
System.validation = true;
update System.validation;
}
是否有任何第一個例子會被認爲是不好的做法?我個人不喜歡第二個版本,因爲我覺得它只是重複代碼。單元測試在兩個方面都非常相似,而我需要兩種測試。我沒有看到一個人比另一個人測試更復雜。
只要api一致,我也不會感到驚訝。你有這種事情的房子規則? 我可能會重命名setActivateValidation類似toggleValidation來清除它的時間。 更大的問題是System.validation來自哪裏。我希望你把它注入到這個類的構造函數中! –
如果該方法只有一個參數,我不擔心它 – Kai
相關:https://softwareengineering.stackexchange.com/questions/147977/is-it-wrong-to-use-a-boolean-parameter-to -determine-behavior – dan