当逻辑表达式或者算法的计算过程冗长的时候,类似下面的代码,会让我们阅读和理解的过程非常痛苦,例如:
if(
browser.toUpperCase().indexOf("SAFARI") > -1 ||
brower.toUpperCase().indexOf("CHROME") > -1 ||
brower.toUpperCase().indexOf("FIREFOX") > -1 ||
brower.toUpperCase().indexOf("IE") > -1){
//do something...
}
以上的逻辑没有问题,不会影响机器性能和运行,但是非常难以阅读,会对自己和阅读你代码的人造成压力,所以我建议使用解释性变量来优化类似以上复杂的代码,做法如下:
final String buc = browser.toUpperCase();
final boolean isSafari = buc.indexOf("SAFARI") > -1;
final boolean isChrome = buc.indexOf("CHROME") > -1;
final boolean isFireFox = buc.indexOf("FIREFOX") > -1;
final boolean isIe = buc.indexOf("IE") > -1;
if(isSafair || isChrome || isFireFox || isLe){
//do something
}
上面的写法非常有价值,通过良好的命名来重构之前复杂的逻辑表达式,代码逻辑清晰可见,甚至可以不用写注释,也不会影响代码阅读体验,可以举一反三,在系统中冗长的算法或者逻辑条件表达式中引入改方法来优化你的代码。