前期迭代懒得优化,来一个需求,加一个if,久而久之,就串成了一座金字塔。
当代码已经复杂到难以维护的程度之后,只能狠下心重构优化。那,有什么方案可以优雅的优化掉这些多余的if/else?
1. 提前return
这是判断条件取反的做法,代码在逻辑表达上会更清晰,看下面代码:
if ( condition )
{
/* do something */
} else {
return(xxx);
}
其实,每次看到上面这种代码,我都心里抓痒,完全可以先判断!condition,干掉else。
if ( !condition )
{
return(xxx);
}
/* do something */
2. 策略模式
有这么一种场景,根据不同的参数走不同的逻辑,其实这种场景很常见。最一般的实现:
if ( strategy.equals( "fast" ) )
{
/* 快速执行 */
} else if ( strategy.equals( "normal" ) )
{
/* 正常执行 */
} else if ( strategy.equals( "smooth" ) )
{
/* 平滑执行 */
} else if ( strategy.equals( "slow" ) )
{
/* 慢慢执行 */
}