标签:
38:检查参数的有效性
每当编写方法或者构造器的时候,应该考虑它的参数有哪些限制,在方法的开头处对参数进行检查,并且把这些限制写入文档。
注意:
private void sort(long a[]){ assert a != null; }
39:必要时进行保护性拷贝
如果类具有从客户端得到或者返回到客户端的可变组件,类就必须保护性的拷贝这些组件。除非拷贝成本收到限制,且类信任他的客户端不会不恰当的修改组件,就可以在文档中指明客户端的不得不恰当的修改组件,以代替保护性拷贝。
注意:
40:谨慎的设计方法签名
设计签名方法的要点:
注意:
41:慎用重载
重载是静态的,编译时根据调用的参数决定使用重载函数的哪个版本;覆盖是动态的,运行时根据实例的实际类型决定使用哪个版本。
更加准确的说,应该避免的重载是指:参数个数相同,且不同版本的形参之间通过类型转换就可以适用不同的版本,这样就使得程序员不是很容易就确定到底调用哪个版本,从而可能导致错误。
如果需要重载,最好:
42:慎用可变参数
可变参数可以接受0个或者多个指定类型的参数。可变参数机制通过先创建一个数组,数组的大小为在调用位置所传递的参数数量,然后将参数值传到数组中,最后将数组传递给方法。在定义参数数目不定的方法时,可变参数是一种很方便的方式,但不应该被滥用,以免造成混乱。造成混乱的原因可能大多出于:
另外,当重视性能,认为可变参数的每次调用进行的数组分配和初始化可能难以满足性能要求时,可以考虑如下方式:如果对某个方法95%的调用会有三个或者更少的参数,就声明该方法的5个重载:
1 public void fun() {} 2 public void fun(int a1) {} 3 public void fun(int a1, int a2) {} 4 public void fun(int a1, int a2, int a3) {} 5 public void fun(int a1, int a2, int a3, int... rest) {}
43:返回零长度的数组或者集合,而不是null
这个是对于返回类型为数组或者集合的方法来说的,
好处:返回零长度的数组或者集合,就不要求客户端要有额外的代码来处理null返回值的情况。
对于返回null可能比零长度数组或集合的性能优势的反驳:
44:为所有导出的API元素编写文档注释
标签:
原文地址:http://www.cnblogs.com/andyong/p/5071792.html