Chapter 15 使用條件述句
if 述句
簡單 if - else 述句
- 先寫正常程式碼路徑;再處理不常見情況。
// 正確示範
fun openFile(inputFile: File, status: Status){
if (status == SUCCESS){
// do something
}else{
// do something when something goes wrong
}
}
- 在判斷式裡盡量使用「>=」取代「>」或使用「<=」取代「<」
// Good
if (x >= 5) // do something
//
if (x > 4) // do something
這樣做的好處是,你透過 >= 可以知道 x 一定要在 5 以上。
- 運用統一的系統來處理錯誤狀態
if (status == ERROR){
// do something when status is Error
if (status == SUCCESS){
// do something when status is success
}else{
// handle error
}
}else {
// handle success
}
上面的例子看到,一下子在 else 裡面處理錯誤情況,另一次卻又在 else 裡面處理正確的情況。 應盡力避免這種情況。
- 避免空的 if 子句
// Good Way
if(!something){
// do something
}
// Wrong Way
if(something){
;
}else{
// do something
}
- 考慮 else 子句
if (COLOR_MIN <= color && color <= COLOR_MAX){
// do something
}else{
// else color is invalid
}
即使 else 裡面沒有要做任何事。也嘗試寫下 else 。
如果使用 if 來處理例外情況可以不用寫下 else 。但如果使用 if 來處理正反等情況,一定要寫下 else 。
if - else if - else 述句串
利用布林函式呼叫簡化複雜的檢測
if(isControl(inputCharacter)){
// do something
}
else if(isPunctuation(inputCharacter)){
// do something
}
else {
// do something
}
最常見的情況放在最前面以上面的例子來說,最常見的狀況應該是寫在 if 內,而不是後方的 else if 當中。 確保所有情況都考慮到了 else 內可以放入最不可能情況發生時該做的事。 如果正在使用的語言支援 when (or switch or case) 的語法,是情況可以考慮使用。
15.2 case 述句
為 when 選擇最有效的排列順序
- 如果每個 case 的順序一樣重要,按照字母排序(增加可讀性)
- 把正常的情況放在前面
- 按照執行頻率排列 case 子句
使用 when 的訣竅
- 簡化每種對應的操作
- 利用 else 子句來檢測錯誤:讓你的 else 處理幾乎不可能出現的情況。