[英]simplify if else statement
我有一些功能取決於許多條件。 條件語句中的所有變量都是布爾變量,代碼如下,我不喜歡它:
if (userHasMoreThanOneMarket && isOnlyMarketSelected || !userHasMoreThanOneMarket && userHasMoreThanOneAgency) {
if (isOnlyAgencySelected) {
//do case 1
} else if (noAgencySelected && isOnlyMarketSelected) {
//do case 2
}
}
有沒有辦法使它更容易理解和更好?
這與使用JavaScript一樣簡潔。 我想如果您真的想要,可以創建變量來存儲二進制選項:
var multiMarketOneSelected = userHasMoreThanOneMarket && isOnlyMarketSelected;
var singleMarketMultiAgency = !userHasMoreThanOneMarket && userHasMoreThanOneAgency;
if (multiMarketOneSelected || singleMarketMultiAgency) {
if (isOnlyAgencySelected) {
//do case 1
} else if (noAgencySelected && isOnlyMarketSelected) {
//do case 2
}
}
雖然我真的不知道您是否從中獲得了更多的可讀性。
您的代碼看起來不錯,但是如果您不喜歡它,則可以執行以下操作(請注意,如果您更喜歡它,這里唯一的改進就是樣式):
function check(){
return {
valid: userHasMoreThanOneMarket && isOnlyMarketSelected || !userHasMoreThanOneMarket && userHasMoreThanOneAgency,
case: [
isOnlyAgencySelected,
noAgencySelected && isOnlyMarketSelected
]
};
}
var conditions = check();
if (conditions.valid) {
if (conditions.case[0]) {
//do case 1
} else if (conditions.case[1]) {
//do case 2
}
}
我會嘗試使代碼更具可讀性的一些事情:
!userHasMoreThanOneMarket
成為userHasOneMarket
isOnlyMarketSelected
對我來說似乎是多余的。 您正在外部的if子句和內部的if子句中進行檢查。 return;
每個變量之后的語句以消除if條件。 我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.