12月22日总结
领导:“这个项目,今后就给你维护了啊,仔细点。”
小猫:“好,没问题”。
可当满怀信心的小猫打开项目工程包翻看一些代码之后,瞬间懵逼没了信心。
蒙圈
是这样的
code2
还是这样的
code1
平级的if else密密麻麻就算了,但是深套五六层的if else甚至七八层的真的是让人摸不着北。
开启优化
那么就上面小猫遇到的这种情况,面对着几代程序员精心堆积的屎山,试问阁下该如何应对?不慌,老猫罗列了以下解决方案,如果各位还有比较好的优化方法也欢迎留言。
optimize
我们对着上述目录从简单的开始介绍吧:
一、提前return法
当我们遇到空对象或者有部分满足条件之后才能执行的时候,不要只想着正向逻辑,其实可以逆向思维,把不满足条件的优先排除掉。这样可以有效避免if else的深嵌套。
优化前代码:
if(condition){
//doSomething
}else{
}
return;
优化后如下:
if(!condition){
return;
}
二、能省则省,规避最后的else
原来的代码:
public Result addUser() {
if (StrUtil.equals(userStatus, "online")) {
return doStep1();
} else {
return doStep2();
}
// else 后面没有其他业务时,可省略最后的else,使代码简洁
}
优化后的代码:
public Result addUser() {
if (StrUtil.equals(userStatus, "online")) {
return doStep1();
}
return doStep2();
}
当然这里面要注意的点是,一定要确认是最后的else,并没有其他的业务逻辑。
三、 三目运算符
还是基于上面的代码,如果只有两种业务的话,其实在一个方法里面直接用三目运算法进行执行即可。如下改造:
public Result addUser() {
return StrUtil.equals(userStatus, "online")) ?doStep1() : doStep2();
}
一个方法一行代码搞定。
四、使用optional
很多业务场景下,其实我们写if 是为了判空,自从java8之后其实多了一个Optional神器,Optional 是个容器,它可以保存类型 T 的值,或者仅仅保存null。Optional 提供了很多方法,这样我们就不用显式进行空值检测。Optional 类的引入很好的解决空指针异常。我们看下下面的优化方式:
代码优化前:
if (user == null) {
throw new Exception("未查询到用户信息");
}
if (user != null) {
本文作者:lmyyyy
本文链接:https://www.cnblogs.com/lmyy/p/17924218.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战