effective java(方法)

1、检查参数的有效性

对于公有的方法,要用@Javadoc的@throws标签在文档中说明违反参数限制时会抛出的异常。

/**

*@throws ArithmeticException if m is less than or equals to 0

*/

public BigInteger mod(BigInteger m) {

if (m.sigum() <= 0)

throws new ArithmeticException("Modulus <= 0: " + m);

}

对于未被导出的方法,作为包的创建者,你可以控制这个方法将在哪些情况下被调用,因此你可以,也应该确保只将有效的参数值传递进来。

因此,非公有的方法通常应该使用断言来检查它们的参数,

// Private helper function for a recursive sort

private static void sort(long a[], int offset, int length) {

assert a != null;

assert offset >= 0 && length <= a.length;

assert length >= 0 && length <= a.length - offset;

}

assert 不同于一般的有效性检查,如果它们没有起到作用,本质上也不会有成本开销,除非通过将-ea(或者enableassertions)标记传给Java解释器,来启用它们。

不进行有效性检查的情况:有效性检查工作非常昂贵,或者根本是不切实际的,而且有效性检查已隐含在计算过程中完成。

2、必要是进行保护性拷贝

保护性拷贝时,如果要拷贝的类不是final的,就不能保证clone方法一定是此类的对象:它有可能返回专门出于恶意的目的而设计的不可信子类的实例。

3、谨慎设计方法签名

4、慎用重载

5、慎用可变参数

6、返回零长度的数组或者集合,而不是null

7、为所有导出的API元素编写文档注释

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值