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

前言

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

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

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

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比较多考虑使用策略模式,太长了代码没法看逻辑都混在一起

相关推荐
宇瞳月9 分钟前
Rust语言的嵌入式Linux
开发语言·后端·golang
Java中文社群15 分钟前
拿下美团实习~
java·后端·面试
用户861782773651820 分钟前
整表复制
java·后端·mysql
lovebugs21 分钟前
CAS是什么?AtomicInteger如何利用它?ABA问题如何解决?
后端·面试
小巫编程室24 分钟前
快速入门-Java Lambda
java·后端·面试
寻月隐君25 分钟前
Rust 错误处理详解:掌握 anyhow、thiserror 和 snafu
后端·rust·github
Pomelo_刘金29 分钟前
Rust:cargo指令
后端·rust
Asthenia041229 分钟前
设计模式实战:工厂模式+责任链模式——订单处理流程
后端
Emma歌小白38 分钟前
可视化、编辑、并生成 **DOT** 格式的视图的在线平台
后端
宇瞳月39 分钟前
CSS语言的数论算法
开发语言·后端·golang