Effective Java之方法 总结

版权声明:https://blog.csdn.net/qq_26814945 https://blog.csdn.net/qq_26814945/article/details/88169714

第38条 检查参数的有效性
每当编写方法或者构造器的时候 应该考虑它的参数有哪些限制 应该把这些限制写到文档中 并且在这个方法体的开头处 通过显示的检查来实施这些限制

第39条 必要时进行保护性拷贝
假设类的客户端会尽其所能来破坏这个类的约束条件 因此你必须保护性地设计程序
对于构造器的每个可变参数进行保护性拷贝是必要的
保护性拷贝是在检查参数的有效性之前进行的 并且有效性检查是针对拷贝之后的对象 而不是针对原始的对象
对于参数类型可以被不可信任方子类化的参数 请不要使用clone方法进行保护性拷贝
如果类具有从客户端得到或者返回到客户端的可变组件 类就必须保护性地拷贝这些组件 如果拷贝的成本受到限制 并且类信任它的客户端不会不恰当地修改组件 就可以在文档中指明客户端的职责是不得修改受到影响的组件 以此来代替保护性拷贝

第40条 谨慎设计方法签名
谨慎地选择方法的名称
不要过于追求提供便利的方法
避免过长的参数列表
对于参数类型 要优先使用接口而不是类
对于boolean参数 要优先使用两个元素的枚举类型

第41条 慎用重载
要调用哪个重载方法是在编译时做出决定的
对于重载方法的选择是静态的 而对于被覆盖的方法的选择则是动态的
应该避免胡乱地使用重载机制
安全而保守的策略是 永远不要导出两个具有相同参数数目的重载方法 如果方法使用可变参数 保守的策略是根本不要重载它

第42条 慎用可变参数
不必改造具有final数组参数的每个方法 只当确实是在数量不定的值上执行调用时才使用可变参数
public void foo() {}
public void foo(int a1) {}
public void foo(int a1, int a2) {}
public void foo(int a1, int a2, int a3) {}
public void foo(int a1, int a2, int a3, int… rest) {}
在定义参数数目不定的方法时 可变参数方法是一种很方便的方式 但是它们不应该被过度滥用 如果使用不当 会产生混乱的结果

第43条 返回零长度的数组或者集合 而不是null
返回类型为数组或集合的方法没理由返回null 而是返回一个零长度的数组或者集合

第44条 为所有导出的API元素编写文档注释
为了正确地编写API文档 必须在每个被导出的类 接口 构造器 方法和域声明之前增加一个文档注释
方法的文档注释应该简洁地描述出它和客户端之间的约定
没有必要在文档注释中使用HTML<code>或者<tt>标签 Javadoc{@code}标签更好 因为它避免了转义HTML元字符
同一个类或者接口中的两个成员或者构造器 不应该具有同样的概要描述
当为泛型或者方法编写文档时 确保要在文档中说明 所有的类型参数
当为枚举类型编写文档时 要确保在文档中说明常量 以及类型 还有任何公有的方法
为注解类型编写文档时 要确保在文档中说明所有成员 以及类型本身
要为API编写文档 文档注释是最好 最有效的途径

猜你喜欢

转载自blog.csdn.net/qq_26814945/article/details/88169714