LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

业务代码为什么越写越乱?有些判断其实可以统一处理

admin
2025年12月21日 11:47 本文热度 942

在写业务代码的时候,最容易出现的一类代码不是复杂逻辑,而是重复判断刚开始不觉得有什么问题,甚至还挺安心: 多判断几次,逻辑更严谨。

但项目写久了,你会慢慢发现:

  • 判断写得到处都是

  • 改一个规则,要翻一堆代码

  • 有些判断写着写着,自己都说不清为什么要写

问题不是业务复杂,而是有些判断,本就不该分散在业务代码里







一、最典型的场景:每个方法都在做“参数判空”



这种代码,几乎所有项目都有:

if (id == null) {
    throw new RuntimeException("id 不能为空");
}
if (name == null || name.isBlank()) {
    throw new RuntimeException("name 不能为空");
}

一个方法一两行,看着没什么问题。 但当这种判断:

  • 出现在每个新增方法
  • 出现在每个修改方法
  • 出现在每个查询方法

代码的噪音会非常大。

实际上,这类判断完全可以统一前移,而不是写在业务逻辑中。





二、可以统一处理的第一类:参数合法性判断



参数合法性,本质上是输入问题,而不是业务问题。

例如:

  • 是否为空
  • 长度是否合法
  • 数值范围是否合理

这些判断:

  • 和具体业务无关
  • 规则稳定
  • 不应该污染核心逻辑

统一处理后,业务代码只关心一件事:参数是可信的。





三、第二类:数据是否存在的判断



很多业务方法,一上来就是:

Pet pet = petMapper.selectById(id);
if (pet == null) {
    throw new RuntimeException("数据不存在");
}

这类判断看似合理,但问题在于:

  • 每个方法都在查一次
  • 每个方法都在写同样的判断
  • 异常信息还可能不统一

更糟的是,有些地方忘了写,有些地方写得不一样。

“数据是否存在”本身是一个通用规则,不是某个业务的专属逻辑。





四、第三类:状态是否合法的判断



这是业务代码里最容易膨胀的一类。

if (status != Status.INIT) {
    throw new RuntimeException("当前状态不允许操作");
}

刚开始只有一个地方用,没问题。 后来你会发现:

  • A 操作判断一次
  • B 操作判断一次
  • C 操作判断一次

而且判断条件还略有差异。

这种判断如果完全散落在业务代码里,后期几乎一定会出问题。





五、哪些判断真的不该统一



说清楚一点:不是所有判断都适合统一处理。

下面这些判断,最好还是留在业务代码中:

  • 强业务规则判断
  • 和当前功能强相关的流程判断
  • 需要结合多步业务上下文的判断

比如:

if (isFirstAdopt && userAge < 18) {
    // 特殊业务限制
}

这种判断,本身就属于业务表达,统一反而会降低可读性。





六、统一处理之后,业务代码会发生什么变化



当你把“通用判断”抽出去之后,业务方法通常会变成这样:

public void update(UpdatePetDTO dto) {
    Pet pet = loadAndCheck(dto.getId());
    checkUpdatable(pet);
    doUpdate(pet, dto);
}

的变化不是变“少”,而是变“干净”:

  • 每一行都有业务含义
  • 没有重复的防御性判断
  • 出问题时定位非常快




七、一个很实用的判断标准



如果你在写判断时,心里出现过这种想法:

“这个判断别的地方好像也写过”

那它大概率就该被统一。

再给你一个更狠但好用的判断方式:

这个判断,是“所有人都要遵守的规则”,还是“这个功能才需要的规则”?

  • 所有人都要遵守 → 可以统一
  • 只有这个功能需要 → 留在业务里

这个判断,在真实项目里几乎不会翻车。





八、为什么统一判断反而更安全



很多人担心: 统一处理会不会不灵活?

恰恰相反。

当判断逻辑:

  • 集中
  • 明确
  • 有固定入口

你反而更清楚:

  • 哪些规则是全局的
  • 哪些规则是局部的
  • 改动会影响到哪里

最危险的不是统一,而是“大家各写各的”。





总结


        业务代码乱,往往不是因为业务复杂, 而是因为不该出现在那里的判断,出现得太多了。把“通用判断”从业务代码里拿走, 留下的,才是真正需要你思考的业务。

-END-


阅读原文:原文链接


该文章在 2025/12/22 17:58:52 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved