检查参数的有效性
对于公有的方法,要用javadoc的@throws标签抛出异常
非公有的方法,通常使用断言assert来检查它们的参数
必要时进行保护性拷贝
保护性拷贝是在检查参数的有效性之前进行的,并且有效性检查是针对拷贝之后的对象,而不是针对原始的对象。
对于参数类型可以被不可信任方子类化的参数,请不要使用clone方法进行保护性拷贝。
访问方法应该返回可变内部域的保护性拷贝
只要有可能,都应该使用不可变的对象作为对象内部的组件,这样就不必再为保护性拷贝操心
通常使用Date.getTime()返回的long基本类型作为内部的时间表示法,而不是使用Date对象引用,是因为Date是可变的。
谨慎设计方法签名
谨慎地选择方法的名称。选择与大众认可的名称相一致的名称。
不要过于追求提供便利的方法。如果不能确定,还是不提供快捷为好。
避免过长的参数列表。目标是4个参数,或者更少。
对于参数类型,要优先使用接口而不是类
对于boolean参数,要优先使用两个元素的枚举类型。
慎用重载
永远不要导出两个具有相同参数数目的重载方法。
如果方法使用可变参数,保守的策略是根本不要重载它。