类名、方法名、变量名需要使用全英文,尽量不要使用缩写和拼音
合理的命名可以替代注释,提高可读性。
单个类文件和单个方法的代码不要过多
不要一个方法上千行,也不要每个方法只有2行,然后a方法调b方法,b方法调c方法这样跳来跳去。
要合理设计,不要左倾也不要右倾。
添加必要的注释
注释不要过多也不能过少
不要每一行都加个注释
无关紧要的代码尽量不加注释
关键的代码尽量加注释
有特殊处理的一定要加注释
合理的命名可以替代注释,提高阅读性,提高维护性。
使用新版本jdk时,在合适的情况下,应该尽量使用它的新特性
如
java5的泛型
java7的try-with-resources、泛型推断
java8的Lambda
变量、属性、方法应该定义在它的使用范围内,而不要定义在它的使用范围之外
静态的属性、方法不要定义成实例属性、方法,反之亦然。
变量在只在小的作用域,不要定义在大的作用域中(如只在if作用域使用的变量不需要定义在if外面),反之亦然。
优化算法和代码逻辑,避免重复和低效
了解数组、集合、Map的优缺点和使用场景,正确的使用数组、集合、Map
频繁的字符串操作应该使用StringBuilder或StringBuffer,特别是字符串拼接操作
不要无脑的throws异常,能处理尽量处理
也不要无脑的throw new Exception,能通过特殊返回值处理就不要抛出异常,异常对资源消耗很大,避免频繁的创建抛出异常
文件操作使用Buffered流和NIO能提升IO操作的速度
可以使用单例模式的情况下请使用单例
1.避免重复对象的创建
2.避免全静态函数调用的面向函数编程
可以使用final的情况下请使用final
在合适的场景下,使用位运算代替乘除等运算
在对速度要求严格的情况下,可以使用位运算代替乘除等运算
在对速度要求不严格的情况下,不要使用位运算,因为可读性太低。
使用File.separator代替文件路径中的/或\
因为java是跨平台语言,所以我们要尽量的做到可以跨平台
使用System.arraycopy 代替自定义的数组复制
如果可以通过clone,就不要new
合理使用缓存,简单的缓存可以直接用static final Map,复杂的可以考虑使用第三方的缓存库
合理的使用多线程
只在该用多线程时才用多线程,可用可不用时尽量不要用。
多线程的资源分配和锁竞争机制会额外的占用资源。
多线程让程序变的复杂,可读性维护性变差。
使用多线程,应该避免过多的使用synchronized等同步锁操作
使用多线程,如果线程很多且重复使用,请使用线程池
尽量不要重写finalize方法
不要在finalize干一些资源回收或关闭的操作。