【effective java】38~44.方法

第38条:检查参数的有效性

当编写方法或者构造方法的时候,应该考虑它的参数有哪些限制,应该把这些限制写到文档中,并且在这个方法的开头处,通过显示的检查来实施这些限制.养成这个习惯是非常必要的.

第39条:必要时进行保护性拷贝

如果类具有从客户端得到或者返回客户端的可变组件,类就必须保护性地拷贝这些组件,如果拷贝成本受到限制,并且类信任调用者不会修改内部组件,不进行保护性拷贝也是可以的,类的文档必须清楚说明这一点(保证对象里的已经被赋值的数据不被修改)

第40条:谨慎设计方法签名

1.谨慎地选择方法的名称。遵循标准的命名习惯。

2.不过于追求提供便利的方法。方法太多会使类难以学习、使用、文档化、测试和维护。

3.避免过长的参数列表。目标是四个参数以下。

缩短参数列表的方法:

a,分解多个方法。

b,使用辅助类来保存参数分组,静态成员类。

c,从对象构建到方法调用都采用Builder模式。

4.对于参数类型,要优先使用接口而不是类。

5.对于boolean参数,要优先使用两个元素的枚举类型,使代码更容易阅读和编写。

第41条:慎用重载

Set<Integer> set = new TreeSet<Integer>();

List<Integer> list = new ArrayList<Integer>();

for(int i=-3; i<3; i++){

//自动装箱

set.add(i);

list.add(i);

}

for(int i=0; i<3; i++){

set.remove(i);//把对象1 2 3移除

// list.remove(i);//把索引1 2 3移除(我们的目的是移除对象,看源码得知是重载的问题!!!)

list.remove(Integer.valueOf(i));//把对象1 2 3移除

}

System.out.println("set : "+set);

System.out.println("list : "+list);

第42条:慎用可变参数(varargs)

尽管可变参数是一个很方便的方式,但是它们不应该被过度滥用。除非有必要,尽量不要使用这种方法

使用规范:超过3个参数的时候再使用可变参数

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,而是返回一个零长度的数组或者集合。

例如:Collections.emptyList()、new int[0]

第44条:为所有导出的API元素编写文档注释

在dos命令提示符中输入:javadoc -d myhelp -author -version Register.java(也可以编译整个文件夹,javadoc -d myhelp -author -version test) -d 表示生成的目录位置,myhelp表示生成文档所在当前目录下的文件夹名 -author是作者的名字 -version是版本号(这两项非必填项,不写的话不会生成相应的文档注释内容) ps:如果注释中有中文,需要在dos命令中加入-encoding utf-8 -charset utf-8

猜你喜欢

转载自blog.csdn.net/charjay_lin/article/details/81083771