天天看点

分解条件表达式

我们知道,在程序中,复杂的条件逻辑是最常导致复杂度上升的地点之一。我们需要编写代码来检查不同的分支条件、根据不同的分支做不同的事,然后,我们很快就会得到了一个相当长的函数。再然后,代码的可读性就下降了,而条件逻辑则会使代码更难阅读。

我们在处理大块头的代码时,常会把它分解成许多个独立的函数,根据每个代码块的用途,为分解出来的函数命名,从而更清晰地表达自己的意图。对于条件语句,我们也可以这么做。看下面这个例子:

if (username == null || username.equals("") || password == null || password.equals("")) {

        //todo

 }

这段条件代码要做的事情就是判断用户名和密码是否正确,但是它用了三个“||”运算符,整个条件判断显得十分冗长。那么,怎么简化呢?我们可以分别把它们提出来,就像下面这样:

if (userNameIsValid(username) && passwordIsValid(password)) return true;

    //todo

}

 private boolean userNameIsValid(Object userName) {

    if (userName == null || userName.equals("")) return false;

    return true;

}

private boolean passwordIsValid(Object password) {

    if (password == null || password.equals("")) return true;

    return true;

}

当然了,在上面的这个例子中,我使用的if (username == null || username.equals("") || password == null || password.equals(""))其实算是比较简单的,在项目中,一些条件判断语句往往要比这复杂的多。不要觉得条件语句很短就没有提炼的必要,我们要关注的是代码意图和它自身的差距。提炼之后可读性会更高,它看起来就像一条注释一样简单明了。

--------------------- 

版权声明:本文为CSDN博主「碧濤」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:

继续阅读