建议13:养成优化表达式的思维方式(2)
直观分析,这个逻辑结构的错乱是因为随意混用大于号和小于号等运算符造成的。如果调整一下表达式的结构顺序,阅读起来就非常清晰了。
- if(( 6 <= age && age < 18) || 65 <= age ){
- }
这里采用了统一的小于号方式,即所有参与比较的项都按着从左到右、从小到大的思维顺序进行排列,而不再遵循变量始终居左、比较值始终居右的传统编写习惯。
3.第三种方式—避免布尔表达式的叠加
表达式中的另一个“顽疾”是布尔型表达式的重叠所产生的迷宫。在复杂表达式中,这种多重叠加的布尔表达式足以“令人生畏”。例如,对于下面这个条件表达式:
- if !(!isA || !isB) {
- }
如果采用“剥洋葱皮”的方法逐层分析,也可以找到结果。当然,也可以对这样的表达式进行优化,以方便阅读。例如: - ( ! isA || ! isB) = ! (isA && isB)
- ( ! isA && ! isB) = ! (isA || isB)
运算符为很多程序员所喜爱,特别是在JavaScript函数式编程中,这个运算符的使用频率会更高。但对于很多开发者来说,由于难以适应这种连续思维,会在阅读代码时产生障碍。为此,可以适当采用if条件语句对?运算符表达式进行分解。
4.第四种方式—if语句分解
例如,对于下面这个复杂表达式,如果不仔细进行分析,很难理清它的逻辑顺序。
- var a.b = new c(a.d ? a.e(1) : a.f(1))
在使用if条件语句后,逻辑结构就变得非常清晰了。 - if(a.d){
- var a.b = new c(a.e(1));
- }else{
- var a.b = new c(a.f(0));
- }