Effective Java 第八九十章
方法
检查参数的有效性
必要时进行保护性拷贝
谨慎设计方法签名
1 方法名称:易于理解,风格一致,大众认可
2 避免过长的参数列表
3 参数类型:优先使用接口而不是类
4 boolean参数,优先使用两个元素的枚举类型
慎用重载
1 对重载方法的选择是静态的,对覆盖方法的选择是动态的
2 不要导出具有相同参数数量的重载方法
慎用可变参数
返回零长度的数组或者集合,而不是null
谨慎返回optional
1 永远不要通过返回Optional的方法返回null
2 optional不应该包括集合,map,stream,数组和optional
3 如果无法返回结果并且没有返回结果时客户端必须执行特殊的处理,那么就返回optional
4 不应该返回基本包装类型的optional
5 optional不合适作为键,值或者集合数组中的元素
为所有导出的API元素编写文档注释
通用编程
将局部变量的作用域最小化
1 局部变量在第一次使用它的地方进行声明
2 局部变量都应该包含一个初始化表达式,除了try-catch
3 方法应该小而集中
for-each循环优先于for循环
了解和使用类库
如果需要精确的答案,请避免使用float和double
1 推荐bigdecimal,int,long
基本类型优先于装箱基本类型
1 装箱基本类型慎用==操作符
如果其他类型更合适,尽量避免使用字符串
1 字符串不适合代替枚举
2 字符串不适合代替聚合类型
了解字符串连接的性能
通过接口引用对象
接口优先于反射机制
谨慎地使用本地方法
谨慎地进行优化
1 编写好的程序而不是快的程序,不要为了性能牺牲合理的结构
遵守普遍接受的命名惯例
异常
只针对异常的情况才使用异常
1 异常不应该用于正常的控制流
对可恢复的情况使用受检异常,对编程错误使用运行时异常
避免不必要地使用受检异常
优先使用标准异常
抛出与抽象对应的异常
每个方法抛出的所有异常都要建立文档
在细节消息中包含失败-捕获信息
努力使失败保持原子性
不要忽略异常

浙公网安备 33010602011771号