本文共 1356 字,大约阅读时间需要 4 分钟。
前例的三元表达式实现如下:
public String getReversedOperator2() { return operator.equals("=") ? "!=" : operator.equals("==") ? "!=" : operator.equals("!=") ? "=" : operator.equals("<") ? "!<" : operator.equals(">") ? "!>" : operator.equals("<=") ? "!<=" : operator.equals(">=") ? "!>=" : "?";}
如果不能当场return,可以如此:
public String getReversedOperator21() { String reversedOperator = operator.equals("=") ? "!=" : operator.equals("==") ? "!=" : operator.equals("!=") ? "=" : operator.equals("<") ? "!<" : operator.equals(">") ? "!>" : operator.equals("<=") ? "!<=" : operator.equals(">=") ? "!>=" : "?"; //Do something here. return reversedOperator;}
三元表达式有这样几种优势:
信息密度更大,对应关系更清晰。也就是需要较少的代码,即可完成原来的功能;额外代码的消除,使得代码中的输入输出变得更加清晰(输入是">",输出就是“!<”,等等)。
面向结果,而非过程,从而激发“本能封装”。在if-else if-else结构中,在任何一个分支中,代码可以随时添加,整个方法的长度就失控了。在三元表达式中,每个分支只能是一个值,而不是产生值的一些代码。这就促使人们不得不写一个方法,未来可能会复用。
主流程与分支流程分离。一个if-else if-else结构到底在做什么?可能需要仔细看看才能看清楚;但一个三元表达式就做一件事情:给一个变量赋值,一望而知。而数值的来源,要么一行代码说清楚,要么则抽象成各自的方法。
尽管三元表达式不是面向对象的理念,然而却是非常好的高内聚,低耦合的产物;也是“信息隐匿”的利器。
转载地址:http://ltbob.baihongyu.com/