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

前言

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

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

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

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

相关推荐
上进小菜猪2 小时前
把 KES 集群交给 Kubernetes 的九十天:一个 DBA 的试用实录
后端
两点王爷3 小时前
PostgreSQL 常用 SQL 语句与 GIS 相关函数详解
数据库·后端
考虑考虑3 小时前
Springboot环境变量占位符语法
spring boot·后端·spring
步行cgn5 小时前
Spring 基于 XML 的自动装配:byName 详解
java·后端·spring
RISCV_Explorer7 小时前
RISC-V启动与运行时规范机制解析——BRS约定、HSM多核启动与设备树要求
后端·risc-v
星栈独行7 小时前
ADK-Rust 是什么?Rust 生态新一代 AI Agent 开发套件
人工智能·后端·rust
JavaGuide7 小时前
对标 MinIO!全新一代分布式文件系统正式发布
前端·后端
用户8356290780518 小时前
使用 Python 将 DOCX 转换为 Markdown
后端·python
IT_陈寒8 小时前
Vue computed属性这个坑,我居然踩了三次才爬出来
前端·人工智能·后端
孙启超9 小时前
【AI开发之Rust】第 7 课:错误处理 —— panic、Result 与 `?`
人工智能·分布式·后端·爬虫·spring cloud·架构·rust