第 49 条:检查参数的有效性
不仅需要检查参数的有效性,还需要在函数的文档中给予明确的说明,如在参数非法的情况下,会抛出哪些异常,或导致函数返回哪些错误值等
第 50 条:必要时进行保护性拷贝
如果不能够容忍对象进入数据结构之后发生变,就必须对该对象进行保护性拷贝,并且让拷贝之后的对象而不是原始对象进入到数据结构中。
第 51 条:谨慎设计方法签名
- 谨慎地选择方法的名称
- 避免过长的参数列表,如果多于四个了就该考虑重构这个方法了
- 对于参数类型、要优先使用接口而不是类。
- 对于 boolean 参数,优先使用两个元素的枚举类型。
第 52 条:慎用重载
对于重载方法的选择是静态的,而对于被覆盖的方法的选择则是动态的。
- 安全而保守的策略是,永远不要导出两个具有相同参数数目的重载方法。
- 如果方法使用可变参数,保守的策略是根本不要重载它。
- 在 Java 1.5 之后,需要对自动装箱机制保持警惕。
对于多个具有相同参数数目的方法来说,应该尽量避免重载方法。我们应当保证:当传递同样的参数时,所有重载方法的行为必须一致。
第 53 条:慎用可变参数
有的时候在重视性能的情况下,使用可变参数机制要特别小心。可变参数方法的每次调用都会导致进行一次数组分配和初始化。
第 54 条:返回零长度的数组或者集合,而不是 null
private static final Cheese[] EMPTY_CHEESE_ARRAY= new Cheese[0];
Collections.emptyList();
Collections.emptySet();
Collections.emptyMap();