简单且非常实用的代码优化技巧-会一直收集并增加

前言

对于代码优化,对于很多团队和项目来说基本可有可无,毕竟能跑得起来才是大事。对于个人就是一个自己能不能看得过去的问题了,忙起来是坨~也无关紧要了

如果一个团队从开始就有代码规范,整个团队的代码风格一定也还不错

因为确实有的代码就是会看起来舒服,改起来也容易,排查问题以及需要优化性能时也顺手。差劲的代码读起来心累,改的时候提心吊胆,深怕影响到核心功能,怕改一下房子都塌掉了

IF-ELSE 优化

核心减少if else嵌套,也叫卫语句,在结果上让代码结构上看起来比较直。虽然这个很简单但是很多人忽略甚至不知道!!!反复使用好代码一定好看很多

  • 使用取反优先结束少代码块逻辑
java 复制代码
public void ifElseAndCodeBlock() {
    if (conditionA) {
        // 比较多的业务代码......
        return;
    }
}

public void oneIfToTheEnd1() {
    if (conditionA) {
        // 比较多的业务代码......
        return;
    } else {
        // 这里throw异常或者return最应该提前结束了!!!
        throw RuntimeException("Don't meet conditionA!");
    }
}

public void oneIfToTheEnd2() {
    if (conditionA) {
        // 比较多的业务代码......
        return;
    } else {
        // 相对少的业务代码......
        return;
    }
}

优化后结果

java 复制代码
public void oneIfToTheEndOptimize() {
    if (!conditionA) {
        // return、throw或者少代码块
        return;
    }
     // 比较多的业务代码......
}
  • if else后有公共部分
java 复制代码
public void ifElseAndCodeBlock() {
    if (conditionA) {
        //业务代码1......(代码多)
    } else {
        //业务代码2......
    }
    //业务3
}

业务3代码不多就重复写两遍,多的话就抽出来。写在一起也更好,有时代码长了都不好看到3,还要找对应括号看哪里是共用逻辑块3。这里也要遵循少的先结束

csharp 复制代码
public void ifElseAndCodeBlockOptimize1() {
    if (!conditionA) {
        //业务代码2......
        //业务3
        return;
    }
    //业务代码1......(代码多)
    //业务3
    return;
}
  • 使用&将条件平铺
csharp 复制代码
public void nestIf() {
    //业务代码1......
    if (conditionA) {
        if (conditionB) {
            if (conditionC) {
                //业务代码2......
            } else {
                //业务代码3......
            }
        }
    }
}

优化后

csharp 复制代码
public void nestIfOptimize() {
    //业务代码1......
    if (conditionA && conditionB && conditionC) {
        //业务代码2......
        return;
    }
    if (conditionA && conditionB && !conditionC) {
        //业务代码3......
        return;
    }
}
  • 还有一些关于IF-ELSE简单优化技巧

    使用三目运算符: if-else中代码只有一两行可以考虑

    使用Java8的Optional函数

java 复制代码
String postCode = "";
if(user != null){
  if(user.getAddress() != null){
      Address address = user.getAddress();
          if(address.getCity() != null){
              City city = address.getCity();
                  if(city.getPostCode() != null ){
                      postCode =  city.getPostCode();
                  }
         }
     }
}


String postCode = Optional.ofNullable(user) .map(e->e.getAddress()) .map(e->e.getCity()) 
.map(e->e.getPostCode).orElse("");

当一个函数if else比较多考虑使用策略模式,太长了代码没法看逻辑都混在一起

相关推荐
IT_10244 小时前
Spring Boot项目开发实战销售管理系统——系统设计!
大数据·spring boot·后端
ai小鬼头5 小时前
AIStarter最新版怎么卸载AI项目?一键删除操作指南(附路径设置技巧)
前端·后端·github
Touper.5 小时前
SpringBoot -- 自动配置原理
java·spring boot·后端
一只叫煤球的猫6 小时前
普通程序员,从开发到管理岗,为什么我越升职越痛苦?
前端·后端·全栈
一只鹿鹿鹿6 小时前
信息化项目验收,软件工程评审和检查表单
大数据·人工智能·后端·智慧城市·软件工程
专注VB编程开发20年6 小时前
开机自动后台运行,在Windows服务中托管ASP.NET Core
windows·后端·asp.net
程序员岳焱6 小时前
Java 与 MySQL 性能优化:MySQL全文检索查询优化实践
后端·mysql·性能优化
一只叫煤球的猫7 小时前
手撕@Transactional!别再问事务为什么失效了!Spring-tx源码全面解析!
后端·spring·面试
旷世奇才李先生7 小时前
Ruby 安装使用教程
开发语言·后端·ruby
沃夫上校10 小时前
Feign调Post接口异常:Incomplete output stream
java·后端·微服务