48. 检查参数有效性
49. 必要时进行防御性拷贝
50. 仔细设置方法签名
- 遵守标准命名约定
- 不要过分地提供变量的方法(单一原则?)
- 避免过长的参数列表(小于4个)
避免参数过长的三种方式:- 拆分为多个方法
- 创建辅助类保存参数组
- 考虑使用Builder模式
- 对于参数类型,优先选择接口而不是类(更易拓展)
- 对于布尔类型参数,优先使用两个元素的枚举类型
枚举类型提供了拓展的可能性,且具备更好的阅读性和表现力51. 谨慎使用可变参数
可变参数会带来额外的性能开销,每次调用可变参数方法都会导致数组分配和初始化51. 返回空的数组或集合,不要返回null
避免客户端调用方额外的null 值判断52. 谨慎的使用Optional
Optional为返回null值提供了更加友好的解决方案,但不是所有的类型能从Optional中获益,如:容器类型,包括集合、Map、Stream、数组和Optional自生不应该封装在Optional中。当如果可能无法返回结果,并且在没有返回结果,客户端还必须执行特殊处理的情况下,则应该声明返回Optional。
使用OptionalInt、OptionalLong、OptionDouble替代基本类型的Optional53. 为所有已公开的API元素编写文档注释
要正确的记录API,必须在每个导出的类、接口、构造方法、方法和属性声明之前加上文档注释