整洁 Java 代码
工具函数
整理理念
- 函数式编程,减少业务代码,逻辑一目了然。
- 通用工具函数,逻辑考虑周全,出问题概率低。
场景一:比较对象
|
场景一:判断对象为空
|
拆分长函数
整洁理念
- 函数越短小精悍,功能就越单一,往往生命周期较长;
- 函数越长越不容易理解和维护,维护人员不敢轻易修改;
- 过长函数中,往往含有难以发现的重复代码。
理解思路:
- 当函数超过 80 行后,就属于长函数,需要进行拆分。
- 代码块前方有一行注释,就是提醒你可以将这段代码替换成一个函数。
- 函数有一个描述恰当的名字,就不需要去看内部代码究竟是如何实现的。
场景一:代码块封装为函数
冗余场景:
|
整洁方案:
|
场景二:循环体封装为函数
冗余场景:
|
整洁方案:
|
场景三:条件体封装为函数
冗余场景
|
整洁方案
|
函数内代码块级别尽量一致
整洁理念
- 函数调用表明用途,函数实现表达逻辑,层次分明便于理解;
- 不用层次的代码块放在一起,容易让人觉得代码头重脚轻。
场景一:函数与代码块混合
冗余场景
|
整洁方案
|
封装相同功能代码为函数
整理理念:
- 封装相似代码为函数,差异性通过函数参数控制。
- 封装公共函数,减少代码行数,提高代码质量;
- 封装公共函数,使业务代码更精炼,可读性可维护性更强。
场景一:封装相同代码为函数
冗余场景
|
整洁方案
|
场景二:封装相似代码为函数
冗余场景
|
整洁方案
|
封装获取参数值函数
整洁理念
- 把获取参数值从业务函数中独立,使业务逻辑更清晰;
- 封装的获取参数值为独立函数,在代码中重复使用。
场景示例
冗余场景
|
整洁方案
|
接口参数化封装相同逻辑
整洁理念
- 把核心逻辑从各个业务函数中抽取,使业务代码更清晰更易维护;
- 避免重复性代码多次编写,精简重复函数越多收益越大。
场景示例
冗余场景
|
整洁方案
|
减少函数代码层级
整洁理念
- 代码层级减少,代码缩进减少;
- 模块划分清晰,方便阅读维护。
- 过多的缩进会让函数难以阅读。
- 函数代码层级控制在1-4之间。
场景一:提前 return
返回函数
冗余场景
|
整洁方案
|
场景二:提前 continue
结束循环
整洁建议:
- 在循环体中,建议最多使用一次continue。
- 需要多次 continue 时,把循环体封装为函数。
冗余场景
|
整洁方案
|
封装条件表达式函数
整洁理念
- 把条件表达式从业务函数中独立,使业务逻辑更清晰;
- 封装的条件表达式为独立函数,可以在代码中重复使用。
场景一:封装简单条件表达式为函数
冗余场景
|
整洁方案
|
场景二:封装复杂条件表达式为函数
整洁建议: 也可以用流式(Stream)编程的过滤来实现。
冗余场景
|
整洁方案
|
避免不必要的空指针判断
整洁理念
- 避免不必要的空指针判断,精简业务代码处理逻辑,提高业务代码运行效率;
- 不必要的空指针判断,属于永远不执行的Death代码,删除有助于代码维护。
场景一:MyBatis 返回值
MyBatis是一款优秀的持久层框架,是在项目中使用的最广泛的数据库中间件之一。
通过对MyBatis源码进行分析,查询函数返回的列表和数据项都不为空,在代码中可以不用进行空指针判断。