48. 检查参数有效性

利用Objects中提供的方法对参数进行预先检查

49. 必要时进行防御性拷贝

不可变类暴露变量引用导致不可变性失效

50. 仔细设置方法签名

  • 遵守标准命名约定
  • 不要过分地提供变量的方法(单一原则?)
  • 避免过长的参数列表(小于4个)
    避免参数过长的三种方式:
    • 拆分为多个方法
    • 创建辅助类保存参数组
    • 考虑使用Builder模式
  • 对于参数类型,优先选择接口而不是类(更易拓展)
  • 对于布尔类型参数,优先使用两个元素的枚举类型
    枚举类型提供了拓展的可能性,且具备更好的阅读性和表现力

    51. 谨慎使用可变参数

    可变参数会带来额外的性能开销,每次调用可变参数方法都会导致数组分配和初始化

    51. 返回空的数组或集合,不要返回null

    避免客户端调用方额外的null 值判断

    52. 谨慎的使用Optional

    Optional为返回null值提供了更加友好的解决方案,但不是所有的类型能从Optional中获益,如:容器类型,包括集合、Map、Stream、数组和Optional自生不应该封装在Optional中。当如果可能无法返回结果,并且在没有返回结果,客户端还必须执行特殊处理的情况下,则应该声明返回Optional。
    使用OptionalInt、OptionalLong、OptionDouble替代基本类型的Optional

    53. 为所有已公开的API元素编写文档注释

    要正确的记录API,必须在每个导出的类、接口、构造方法、方法和属性声明之前加上文档注释