分解条件表达式

论坛 期权论坛 脚本     
已经匿名di用户   2022-4-26 16:03   2166   0

自从十月中旬之后,由于考试和工作等原因,未能更新博客,今天将回归到常态,持续更新。

“分解条件表达式”主要就是从if、then、else中分别提炼出独立函数。

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

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

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(""))其实算是比较简单的,在项目中,一些条件判断语句往往要比这复杂的多。不要觉得条件语句很短就没有提炼的必要,我们要关注的是代码意图和它自身的差距。提炼之后可读性会更高,它看起来就像一条注释一样简单明了。

我的博客原文:http://www.xubitao.cn/blog/2014/11/19/decompose-conditional/

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP