If ... else ...
是程序中复杂性的主要来源,减少If ... else ...
就是减少复杂性。
如果可以用? :
运算符替换一个If ... else ...
,那么最好替换。它不只是把三行写成一行,而是用一次运算代替了一次判断。程序复杂度从2变成了0。需要注意? :
并不是一个真正的运算符,它相当于一个分段函数:
f(x) = {
x != 0, g(x);
x == 0, h(x);
}
最佳的办法当然是把x
的范围限定到有效那部分,这样就变成g(x)
或h(x)
。
另一个办法是合并g/h
,用一个函数来计算,比如说,对于集合
if (x !in coll) return;
for (a in coll) {
do some thing
}
把上下两部分看成一个函数,可以用空循环处理代替第一个判断,或者在集合尾部加上x
做为哨兵,当成始终都有x
元素的集合处理。
// 使用空循环代替第一个判断, 当没有x时,for循环为空。
for (a in coll.filter(a => a != x)) {
do some thing
}
// 或者使用哨兵
coll.push(x)
for (a in coll) {
// 一定有一个x
}