我们平时写if,switch或for语句是常有的事儿,也一定写过多层if或for语句嵌套的情况,如果代码里的嵌套超过3层,阅读起来就会非常困难了。我们应该尽量避免代码嵌套多层,最好不要超过2层。

if语句嵌套的问题

多层if语句嵌套是常有的事情,有什么好的方法可以减少嵌套呢?

1 尽早终止函数或返回数据

如果符合某个条件下可以直接终止函数,则应该将这个条件放在第一位。我们来看看下面的例子。

if(condition1) {

if(condition2){

if(condition3){

}

else{

return;

}

}

else{

return;

}

}

else {

return;

}

这段代码中if语句嵌套了3层,看起来已经很复杂了,我们可以将最后面的return提取到最前面去。

if(!condition1){

return;

}

if(!condition2){

return;

}

if(!condition3){

return;

}

//doSomething

这段代码中,我们把condition1等于false的语句提取到前面,直接终止函数,将多层嵌套的if语句重构成只有一层if语句,代码也更清晰了。

注意:一般情况下,我们写if语句会将条件为true的情况写在前面,这也比较符合我们的思维习惯。如果是多层嵌套的情况,应该优先减少if语句的嵌套

2 提取内层嵌套为一个函数进行调用

多层嵌套的时候,我们还可以将内层嵌套提取到一个新的函数中,然后调用该函数,这样代码也就更清晰了。

java 嵌套if优化_Java 如何优化if语句嵌套相关推荐

  1. for语句嵌套执行顺序_C语言笔记 | for语句嵌套时的运行顺序

    for语句在C程序中的出场频率是相当高的,重要程度不言而喻.今天向大家分享for语句在嵌套时的具体运行顺序.其实,在一开始学习C语言的时候,我们的老师就告诉我们看懂程序的重要性,就是要让自己像机器一样 ...

  2. java 强制转换 效率_Java 性能优化:35 个小细节,让你提升 Java 代码的运行效率...

    代码优化细节 1.尽量指定类.方法的final修饰符 2.尽量重用对象 3.尽可能使用局部变量 4.及时关闭流 5.尽量减少对变量的重复计算 6.尽量采用懒加载的策略,即在需要的时候才创建 7.慎用异 ...

  3. java解析json文件_Java性能优化:正确的解析JSON文件

    数据收集服务平均1小时OOM(java.lang.OutOfMemoryError: GC overhead limit exceeded)一次,发现都是在下载处理 JSON Atom Feed时OO ...

  4. java 字符串优化_Java字符串优化

    这里没有新的String调用,唯一存在的是StringBuilder.toString,所以 1 java.lang.String test(java.lang.String); Code: Stac ...

  5. java反射优化_JAVA反射优化

    ****************** 转自 https://my.oschina.net/19921228/blog/3042643 *********************** 比较反射与正常实例 ...

  6. java循环基础知识_Java基础知识·循环语句

    掘友们,大家好呀,我是宸道. 今天要讲解的是Java基础的循环语句,虽然很基础但还是希望大家看完,就当时复习知识了,基础越牢固越好,对我们是有很大帮助的. 相关推荐 循环语句可以在满足循环条件的情况下 ...

  7. java sql语法解析_Java中的SQL语句解析

    String sql = "SELECT userId,password FROM Table_1 where userId ='" + userId +"' and p ...

  8. java调优 视频_Java优化高性能高并发+高并发程序设计视频教程

    转自:https://www.cnblogs.com/ajianku/p/10236573.html 第1章 课程介绍及项目框架搭建 1-1 Java高并发商城秒杀优化导学 1-2 项目环境搭建(Ec ...

  9. java如何定义一个字符栈_Java性能优化之字符串优化处理

    本文来源于: https://blog.csdn.net/xlgen157387/article/details/51870322 1.String对象 String对象是java中重要的数据类型,在 ...

最新文章

  1. 算法工程师的落地能力具体指的是什么?
  2. 什么是折线图?怎样用Python绘制?怎么用?终于有人讲明白了(附代码)
  3. ldap基本dn_LDAP学习笔记 - 基础
  4. 地图漫游功能的具体体现_一卡通考勤门禁管线系统主要模块功能说明
  5. mysql中的增删改查
  6. 这年头「野路子」产品太多了
  7. Python入门很难吗? 为什么越来越多的人都学Python?
  8. 随想录(项目管理中的感受)
  9. VC 6.0 : Cannot open include file: 'streambuf': No such file or directory !!
  10. python列表操作详解_Python --列表(List)详解
  11. 四种常见排序算法----php代码实现
  12. 我的世界Java种子大全_种子(世界生成)
  13. 一个好用的大文件传输工具
  14. win7 重装系统变 win10
  15. 正则表达式在JS中的应用,判断邮箱是否合法
  16. 增长黑客,创业公司的用户与收入增长秘籍
  17. 众恒微拓科技:品质退款率怎么优化
  18. 数论作业 —— 公约数公倍数问题
  19. Mybatis丶Mybatis-Plus
  20. Django基础九之中间件

热门文章

  1. Opencv中直方图函数calcHist
  2. 如何使用LaTeX制作表格
  3. 【POI】T1 特工 szp
  4. Python辣鸡,Python多线程不能并行?
  5. [状压DP][BFS][哈希]JZOJ 3243 Cube
  6. 常州计算机职称初定,江苏省人力资源和社会保障厅
  7. 二叉树的应用之根据序列确定二叉树
  8. 如何解决后台日志显示Nacos客户端不断重复拉取配置的问题
  9. 26.18 INFORMATION_SCHEMA KEYWORDS 表
  10. 15 本畅销书,不限于技术