If ... else ...
是程序中復(fù)雜性的主要來源以躯,減少If ... else ...
就是減少復(fù)雜性槐秧。
如果可以用? :
運(yùn)算符替換一個(gè)If ... else ...
,那么最好替換忧设。它不只是把三行寫成一行刁标,而是用一次運(yùn)算代替了一次判斷。程序復(fù)雜度從2變成了0址晕。需要注意? :
并不是一個(gè)真正的運(yùn)算符膀懈,它相當(dāng)于一個(gè)分段函數(shù):
f(x) = {
x != 0, g(x);
x == 0, h(x);
}
最佳的辦法當(dāng)然是把x
的范圍限定到有效那部分,這樣就變成g(x)
或h(x)
谨垃。
另一個(gè)辦法是合并g/h
启搂,用一個(gè)函數(shù)來計(jì)算,比如說刘陶,對于集合
if (x !in coll) return;
for (a in coll) {
do some thing
}
把上下兩部分看成一個(gè)函數(shù)胳赌,可以用空循環(huán)處理代替第一個(gè)判斷,或者在集合尾部加上x
做為哨兵匙隔,當(dāng)成始終都有x
元素的集合處理疑苫。
// 使用空循環(huán)代替第一個(gè)判斷, 當(dāng)沒有x時(shí),for循環(huán)為空纷责。
for (a in coll.filter(a => a != x)) {
do some thing
}
// 或者使用哨兵
coll.push(x)
for (a in coll) {
// 一定有一個(gè)x
}