阿里Java高效代码50例(学习总结)

如何编写高效代码?这是每个研发团队都面临的一个重大问题。《阿里Java高效代码50例》(实际54例)来源于实际经验,帮助我们成为编写高效代码的软件工程师。

 

类别

要点

常量&变量

直接赋值常量值,禁止声明新对象

当成员变量值无需改变时,尽量定义为静态常量

尽量使用基本数据类型,避免自动装箱和拆箱

如果变量的初值会被覆盖,就没有必要给变量赋初值

尽量使用函数内的基本类型临时变量

尽量不要在循环体外定义变量

不可变的静态常量,尽量使用非线程安全类

不可变的成员变量,尽量使用非线程安全类

对象&类

禁止使用JSON转化对象

尽量不使用反射赋值对象

采用Lambda表达式替换内部匿名类

尽量避免定义不必要的子类

尽量指定类的final修饰符

方法

把跟类成员变量无关的方法声明成静态方法

尽量使用基本数据类型作为方法参数类型,避免不必要的装箱、拆箱和空指针判断

尽量使用基本数据类型作为方法返回值类型,避免不必要的装箱、拆箱和空指针判断

协议方法参数值非空,避免不必要的空指针判断

协议方法返回值非空,避免不必要的空指针判断

被调用方法已支持判空处理,调用方法无需再进行判空处理

尽量避免不必要的函数封装

尽量指定方法的final修饰符

表达式

尽量减少方法的重复调用

尽量避免不必要的方法调用

尽量使用移位来代替正整数乘除

提取公共表达式,避免重复计算

尽量不在条件表达式中用!取反

对于多常量选择分支,尽量使用switch语句而不是if-else语句

字符串

尽量不要使用正则表达式匹配

尽量使用字符替换字符串

尽量使用StringBuilder进行字符串拼接

不要使用""+转化字符串

数组

不要使用循环拷贝数组,尽量使用System.arraycopy拷贝数组

集合转化为类型T数组时,尽量传入空数组T[0]

集合转化为Object数组时,尽量使用toArray()方法

集合

初始化集合时,尽量指定集合大小

不要使用循环拷贝集合,尽量使用JDK提供的方法拷贝集合

尽量使用Arrays.asList转化数组为列表

直接迭代需要使用的集合

不要使用size方法检测空,必须使用isEmpty方法检测空

非随机访问的List,尽量使用迭代代替随机访问

尽量使用HashSet判断值存在

避免先判断存在再进行获取

异常

直接捕获对应的异常

尽量避免在循环中捕获异常

禁止使用异常控制业务流程

缓冲区

初始化时尽量指定缓冲区大小

尽量重复使用同一缓冲区

尽量设计使用同一缓冲区

尽量使用缓冲流减少IO操作

线程

在单线程中,尽量使用非线程安全类

在多线程中,尽量使用线程安全类

尽量减少同步代码块范围

尽量合并为同一同步代码块

尽量使用线程池减少线程开销

 

示例代码,详见原文:https://blog.51cto.com/13851865/2462569

 


猜你喜欢

转载自blog.51cto.com/13851865/2462641