《Java工程师必读手册》——Java极客主义系列——Java代码精简之道(5)

简介: 《Java工程师必读手册》——Java极客主义系列——Java代码精简之道(5)

接上篇:https://developer.aliyun.com/article/1227325?spm=a2c6h.13148508.setting.16.34364f0esCxN3Z


五、 利用工具方法

 

1. 避免空值判断

 

普通

 

image.png 

 

精简

 

image.png 

 

2. 避免条件判断

 

普通

 

image.png 

 

精简

 

image.png 

 

3. 简化赋值语句

 

普通

 

image.png 

 

精简

 

image.png 

 

注意

Arrays.asList返回的List并不是ArrayList,不支持add等变更操作。

 

 

4. 简化数据拷贝

 

普通

 

image.png 

 

精简

 

image.png 

 

反例

 

image.png 

 

精简代码,但不能以过大的性能损失为代价。例子是浅层拷贝,用不着JSON这样重量级的武器。

 

5. 简化异常断言

 

普通

 

image.png 

 

精简

 

image.png 

 

注意

可能有些插件不认同这种判断,导致使用该对象时会有空指针警告。

 

6. 简化测试用例

 

把测试用例数据以JSON格式存入文件中,通过JSON的parseObject和parseArray方法解析成对象。虽然执行效率上有所下降,但可以减少大量的赋值语句,从而精简了测试代码。

 

普通

 

image.png

 

精简

 

image.png

 

建议

JSON文件名最好以被测试的方法命名,如果有多个版本可以用数字后缀表示。

 

7. 简化算法实现

 

一些常规算法,已有现成的工具方法,我们就没有必要自己实现了。

 

 

普通

 

image.png 

 

精简

 

image.png 

 

8. 封装工具方法

 

一些特殊算法,没有现成的工具方法,我们就只好自己亲自实现了。

 

普通

 

比如,SQL设置参数值的方法就比较难用,setLong方法不能设置参数值为null。

 

image.png

 

精简

 

我们可以封装为一个工具类SqlHelper,简化设置参数值的代码。

 

image.png

  接下篇:https://developer.aliyun.com/article/1227321?spm=a2c6h.13148508.setting.18.34364f0esCxN3Z

相关文章
|
10天前
|
XML 安全 Java
Java反射机制:解锁代码的无限可能
Java 反射(Reflection)是Java 的特征之一,它允许程序在运行时动态地访问和操作类的信息,包括类的属性、方法和构造函数。 反射机制能够使程序具备更大的灵活性和扩展性
19 5
Java反射机制:解锁代码的无限可能
|
6天前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
32 3
|
11天前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
41 10
|
7天前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
5天前
|
Java
Java代码解释++i和i++的五个主要区别
本文介绍了前缀递增(++i)和后缀递增(i++)的区别。两者在独立语句中无差异,但在赋值表达式中,i++ 返回原值,++i 返回新值;在复杂表达式中计算顺序不同;在循环中虽结果相同但使用方式有别。最后通过 `Counter` 类模拟了两者的内部实现原理。
Java代码解释++i和i++的五个主要区别
|
13天前
|
搜索推荐 Java 数据库连接
Java|在 IDEA 里自动生成 MyBatis 模板代码
基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码。
25 6
|
14天前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
15天前
|
存储 Java API
优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。
【10月更文挑战第19天】本文介绍了如何优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。内容包括Map的初始化、使用Stream API处理Map、利用merge方法、使用ComputeIfAbsent和ComputeIfPresent,以及Map的默认方法。这些技巧不仅提高了代码的可读性和维护性,还提升了开发效率。
36 3
|
15天前
|
存储 Java 开发者
Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效
【10月更文挑战第19天】在软件开发中,随着项目复杂度的增加,数据结构的组织和管理变得至关重要。Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,帮助开发者告别混乱,提升代码质量。
24 1
|
17天前
|
Java
Java代码解释静态代理和动态代理的区别
### 静态代理与动态代理简介 **静态代理**:代理类在编译时已确定,目标对象和代理对象都实现同一接口。代理类包含对目标对象的引用,并在调用方法时添加额外操作。 **动态代理**:利用Java反射机制在运行时生成代理类,更加灵活。通过`Proxy`类和`InvocationHandler`接口实现,无需提前知道接口的具体实现细节。 示例代码展示了两种代理方式的实现,静态代理需要手动创建代理对象,而动态代理通过反射机制自动创建。