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

前言

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

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

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

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

相关推荐
uzong5 小时前
技术故障复盘模版
后端
GetcharZp5 小时前
基于 Dify + 通义千问的多模态大模型 搭建发票识别 Agent
后端·llm·agent
桦说编程6 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
IT毕设实战小研6 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi6 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
阿华的代码王国7 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Jimmy7 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
AntBlack8 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt
bobz9658 小时前
pip install 已经不再安全
后端
寻月隐君8 小时前
硬核实战:从零到一,用 Rust 和 Axum 构建高性能聊天服务后端
后端·rust·github