违反例子1:TreeSet 在JDK中很难找到一个例子,是与本规则相违背的,但也有另外,就是TreeSet和TreeMap。他们的构造函数可以被多次重载,下面让我们来看下这些构造函数: 这两个构造函数在不同的操作行为下,返回的值也是不一样的:
为了确保参数顺序的一致性,把数组类型放在第一位会给你带来很多好处:
你会注意到,在上面那个类中,把所有数组操作都放在第一位,一些其他例子:
违反例子1:Arrays Array是如何违反这条规则的,它在两个参数之间添加了一些可选参数,如: 依照这种方式,copyOfRange()也和fill()一样,遵循了相同的参数顺序: 如果你的API存在过分重载现象,那么你将不得不面对这些问题。 违反例子2:String 另一个例子是String类: 问题所在:
规则5:建立返回值类型 当涉及到返回值类型时,你应该创建一致的、正规的API,下面提供一套设置规则(你可能会对下面的规则存在异议):
对于上面的1、2条,最好的实践应该是:
违反例子1:File File是JDK中的一个类,它违反了许多规则,其中一条就是关于返回值类型。 正确遍历文件名称(如果你做的是防御性编程):
值得注意的是,文件必须存在根目录下( File.isDirectory()),而如果程序出错,则应该抛出IOException异常,而不是返回null。 当返回类型为数组或集合时,千万不要返回null。 违反例子2:JPA JPA违反这个规则的方式就是实体如何从EntityManager中取回或者从查询中获得的:
需要注意的是,NoResultException异常为运行时异常,如果你坚持抛出该异常,请确保客户端代码必须检查和处理。 来源:Dzone |