随着软件项目代码的日积月累,系统维护成本变得越来越高,是所有软件团队面临的共同问题。持续地优化代码,提高代码的质量,是提升系统生命力的有效手段之一。软件系统思维有句话“Less coding, more thinking(少编码、多思考)”,也有这么一句俚语“Think more, code less(思考越多,编码越少)”。所以,我们在编码中多思考多总结,努力提升自己的编码水平,才能编写出更优雅、更高质、更高效的代码。
本文总结了一套与Java函数相关的编码规则,旨在给广大Java程序员一些编码建议,有助于大家编写出更优雅、更高质、更高效的代码。这套编码规则,通过在高德采集部门的实践,已经取得了不错的成效。
使用通用工具函数
案例一
现象描述:
不完善的写法:
[Java] 纯文本查看 复制代码
1
|
thisName != null && thisName.equals(name);
|
更完善的写法:
[Java] 纯文本查看 复制代码
1
|
(thisName == name) || (thisName != null && thisName.equals(name));
|
建议方案:
[Java] 纯文本查看 复制代码
1
|
Objects.equals(name, thisName);
|
案例二
现象描述:
[Java] 纯文本查看 复制代码
1
|
!(list == null || list.isEmpty());
|
建议方案
[Java] 纯文本查看 复制代码
1
2
|
import org.apache.commons.collections4.CollectionUtils;
CollectionUtils.isNotEmpty(list);
|
主要收益
- 函数式编程,业务代码减少,逻辑一目了然;
- 通用工具函数,逻辑考虑周全,出问题概率低。
拆分超大函数
当一个函数超过80行后,就属于超大函数,需要进行拆分。
案例一:每一个代码块都可以封装为一个函
每一个代码块必然有一个注释,用于解释这个代码块的功能。
如果代码块前方有一行注释,就是在提醒你——可以将这段代码替换成一个函数,而且可以在注释的基础上给这个函数命名。如果函数有一个描述恰当的名字,就不需要去看内部代码究竟是如何实现的。
现象描述:
[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
|
// 每日生活函数
public void liveDaily() {
// 吃饭
// 吃饭相关代码几十行
// 编码
// 编码相关代码几十行
// 睡觉
// 睡觉相关代码几十行
}
|
建议方案
[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
// 每日生活函数
public void liveDaily() {
// 吃饭
eat();
// 编码
code();
// 睡觉
sleep();
}
// 吃饭函数
private void
|