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

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

接上篇:https://developer.aliyun.com/article/1227322?spm=a2c6h.13148508.setting.17.48e04f0eaBVGWH


六、 利用数据结构

 

1. 利用数组简化

 

对于固定上下限范围的if-else语句,可以用数组+循环来简化。

 

普通

 

image.png 

 

精简

 

image.png 

 

思考

上面的案例返回值是递增的,所以用数组简化是没有问题的。但是,如果返回值不是递增的,能否用数组进行简化呢?答案是可以的,请自行思考解决。

 

2. 利用Map简化

 

对于映射关系的if-else语句,可以用Map来简化。此外,此规则同样适用于简化映射关系的switch语句。

 

普通

 

image.png 

 

精简

 

image.png 

 

已经把方法简化为一行代码,其实都没有封装方法的必要了。

 

 

 

 

3. 利用容器类简化

 

Java不像Python和Go,方法不支持返回多个对象。如果需要返回多个对象,就必须自定义类,或者利用容器类。常见的容器类有Apache的Pair类和Triple类,Pair类支持返回2个对象,Triple类支持返回3个对象。

 

普通

 

image.png 

 

精简

 

image.png

 

4. 利用ThreadLocal简化

 

ThreadLocal提供了线程专有对象,可以在整个线程生命周期中随时取用,极大地方便了一些逻辑的实现。用ThreadLocal保存线程上下文对象,可以避免不必要的参数传递。

 

 

 

 

普通

 

由于DateFormat的format方法线程非安全(建议使用替代方法),在线程中频繁初始化DateFormat性能太低,如果考虑重用只能用参数传入DateFormat。例子如下:

 

image.png 

 

精简

 

可能你会觉得以下的代码量反而多了,如果调用工具方法的地方比较多,就可以省下一大堆DateFormat初始化和传入参数的代码。

 

image.png 

 

注意

ThreadLocal有一定的内存泄露的风险,尽量在业务代码结束前调用remove方法进行数据清除。


 接下篇:https://developer.aliyun.com/article/1227319?groupCode=java

相关文章
|
6天前
|
Java 程序员 图形学
程序员教你用代码制作飞翔的小鸟--Java小游戏,正好拿去和给女神一起玩
《飞扬的小鸟》Java实现摘要:使用IntelliJ IDEA和JDK 16开发,包含小鸟类`Bird`,处理小鸟的位置、速度和碰撞检测。代码示例展示小鸟图像的加载、绘制与旋转。同时有`Music`类用于循环播放背景音乐。游戏运行时检查小鸟是否撞到地面、柱子或星星,并实现翅膀煽动效果。简单易懂,可直接复制使用。
|
2天前
|
Java 测试技术
如何提高Java代码的可读性
Java是一种常用的编程语言,但是写出易懂且可读性高的代码却是一项挑战。本文将分享一些技巧和建议,帮助您提高Java代码的可读性和可维护性。
|
4天前
|
NoSQL Dubbo Java
StringBoot编程式事务与声明式事务java工程师面试突击第一季
StringBoot编程式事务与声明式事务java工程师面试突击第一季
|
5天前
|
Java Kotlin
java调用kotlin代码编译报错“找不到符号”的问题
java调用kotlin代码编译报错“找不到符号”的问题
17 10
|
6天前
|
前端开发 Java Spring
Java Web ——MVC基础框架讲解及代码演示(下)
Java Web ——MVC基础框架讲解及代码演示
13 1
|
6天前
|
设计模式 前端开发 网络协议
Java Web ——MVC基础框架讲解及代码演示(上)
Java Web ——MVC基础框架讲解及代码演示
8 0
|
6天前
|
Java
Java的取余如何编写代码
【5月更文挑战第9天】Java的取余如何编写代码
22 5
|
6天前
|
Java
代码实例演示Java字符串与输入流互转
代码实例演示Java字符串与输入流互转
|
6天前
|
存储 安全 Java
掌握8条泛型规则,打造优雅通用的Java代码
掌握8条泛型规则,打造优雅通用的Java代码
掌握8条泛型规则,打造优雅通用的Java代码
|
6天前
|
数据库连接
java+ssm+vue代码视频学习讲解
java+ssm+vue代码视频学习讲解
11 0