if else 有時候會造成程式越寫越多層,產生了大家所說的波動拳程式碼,運用一些小技巧讓處理條件更清楚明確。


範例

原本寫法

層數越來越多,程式碼的焦點越來越模糊,維護上會便當相當困難。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

function test($foo, $bar)
{
if ($foo) {
// do A
if ($bar) {
// do B
if ($baz) {
// do C
} else {
// do D
}
} else {
// do E
}
} else {
// do F
}
}

Early Return

可以先把我們不需要的條件,用 return 先過濾掉,可以把焦點專注在剩下需要處理的部分,程式碼不會包得越來越多層,程式碼的可讀性也提升了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php

function test($foo, $bar)
{
if (!$foo) {
// do F
return;
}

// do A

if (!$bar) {
// do E
return;
}

// do B

if (!$baz) {
// do D
return;
}

// do C
}

結論

可以把條件一條一條的列出來,不需要繼續處理的先 return,需要的則往下處理。

少用 else,用 return 過濾條件。