布爾陷阱以及如何避免布爾陷阱
什么是布爾陷阱?
布爾陷阱
當(dāng)一個(gè)布爾型變量在表達(dá)某種意思存在歧義的時(shí)候,我們稱之為布爾陷阱
匾委。
通常最常見(jiàn)的布爾陷阱示例是一個(gè)接收布爾參數(shù)的函數(shù)。
我們以下面的例子為例氓润,解釋什么是布爾陷阱
:
// What does `false` stand for?
results.reload(false);
// What does `true` stand for?
const user = new User(true);
reload
函數(shù)在接收了一個(gè)布爾參數(shù)時(shí)赂乐,在參數(shù)為false
情況下我們一般認(rèn)為不會(huì)重新加載,但是事實(shí)并非如此咖气,有可能他表示的不會(huì)立即重載(例如:immediate
)挨措。
第二個(gè)例子表示用戶是否是管理員,但是如果不查詢文檔崩溪,我們很難搞清楚浅役,給一個(gè)參數(shù)fasle
, user
到底是還是不是管理員伶唯。
并非所有的布爾參數(shù)都是布爾陷阱
// It should be obvious that `true` makes the element disabled
element.setProperty('disabled', true);
// Could be equivalent to `element.disabled = true;`
在上面例子中我們很清晰的知道元素的disable
屬性
如何避免布爾參數(shù)
既然我們已經(jīng)知道了什么是布爾參數(shù)担租,那么如何避免它?我們可以采用參數(shù)對(duì)象的方式進(jìn)行傳遞抵怎。
例如:
// Ok, so reload but not immediately
results.reload({ immediate: false });
// Create a new user without administrator privileges
const user = new User({ isAdministrator: false });
總結(jié)
函數(shù)的布爾參數(shù)如果使用不當(dāng)奋救,會(huì)導(dǎo)致代碼可讀性和可維護(hù)性大大降低岭参,建議我們?cè)倬幋a過(guò)程中盡量避免布爾參數(shù)
本文由mdnice多平臺(tái)發(fā)布