四十一、慎用重载
public class SetList { public static void main(String[] args) { Set<Integer> set = new TreeSet<Integer>(); List<Integer> list = new ArrayList<Integer>(); for (int i = -3; i < 3; i++) { set.add(i); // -3 -2 -1 0 1 2 list.add(i); // -3 -2 -1 0 1 2 } for (int i = 0; i < 3; i++) { set.remove(i); list.remove(i); //删除的下标,list的大小减一! } System.out.println(set + "" + list); } }
一般情况下,对于多个具有相同参数数目的方法来说,应该尽量避免重载方法。在某些情况下,特别是涉及构造器的时候,要遵循这条建议也许是不可能的。在这种情况下, 至少应该避免这样的情形:同一组参数只需经过类型转换就可以被传递给不同的重载方法。如果不能避免这种情形,例如:因为正在改造一个现有的类以实现新的接口,就应该保证:当传递同样的参数时,所有重载方法的行为必须是一致的。如果不能做到这一点,程序员就很难有效地使用被重载的方法或者构造器,他们就不能理解它为什么不能正常的工作。
四十二、慎用可变参数
在定义参数数目不定的方法时,可变参数方法是一种很方便的方式,但是它们不应该被过度滥用。如果使用不当,会产生混乱的结果!
四十三、返回零长度的数组或或者集合,而不是null
返回类型为数组或集合的方法没理由返回null,而不是返回一个零长度的数组或者集合。
四十四、为所有导出的API元素编写文档注释
为API编写文档,文档注释是最好、最有效的途径。对于所有可导出的API元素来说,使用文档注释应该被看做是强制性的。要采用一直的风格来遵循标准的约定。
四十五、将局部变量的作用域最小化
最有利的方式是使用它的地方声明!目的就是使方法小而集中。如果把两个操作合并到同一个方法中,与其中一个操作相关的局部变量就有可能会出现在执行另也操作的代码范围之内。
四十六、for-each循环优先于传统的for循环
for-each循环在简洁性和防御bug方面有着传统的for循环无法比拟的优势,并且没有性能损失。应该尽可能地用for-each循环,但是一下三种是不适合用的:1 如果在便利集合的时候,并删除制定的元素,就需要显示的迭代器了;2如果需要遍历列表或者数组,并取代他部分或者全部的元素值,就需要列表迭代器或者数组索引,以便设定元素的值;3 如果需要并行的遍历多个集合,就需要显式的控制迭代器或者索引变量,以便所有迭代器或者索引变量都可以得到同步前移。
四十七、了解和使用类库
利用标准类库的专家的知识,利用别人的经验;不必浪费时间为那些与工作不太相关的问题提供特别的解决方案;它们的性能往往会随着时间的推移而不断提高,无需你做任何努力!
四十八、如果需要精确的答案,请避免使用float和double
http://blog.csdn.net/abing37/article/details/5332798
float和double是二进制的浮点运算,可以用BigDecimal,int或者long来代替。
四十九、基本类型优先于装箱基本类型
基本类型要优先于装箱基本类型。基本类型个更加简单,也更加快速。当程序用==操作 比较符号时,它做了个同一性比较。当程序设计装箱和拆箱类型混合使用的时候,它会进行拆箱。但是作为集合中的元素,键,值,必须使用装箱类型;当参数化类型的时候,必须使用装箱类型作为类型参数。ThreadLocal<Interger>...
五十、如果其他类型更适合,则尽量避免使用字符串
字符串不适合代替其他的值类型,字符串不适合代替枚举类型,字符串不适合代替聚集类型,字符串不适合代替能力表
五十一、当心字符串连接的性能
string,stringbuilder
五十二、通过接口引用对象
增加框架的灵活性
五十三、接口优先于反射机制
反射机制是一种强大的机制,对于特定的复杂系统编程任务,它是非常必要的,但是它也有一些缺点。如果你编写的程序必须要与编译时未知的类一起工作,如有可能,就应该仅仅使用反射机制来实例化对象,而访问对象时则使用编译时已知的某个接口或者超类。
五十四、谨慎使用本地方法
五十五、谨慎地进行优化
五十六、最受普通接受的命名惯例
五十七、只针对异常的情况才使用异常
在现代的JVM实现上,基于异常的模式比标准模式要慢得多,降低了程序的性能,而且它还不能保证正常工作!所以:异常应该只用于异常的情况;它们永远不该用于正常的控制流。
五十八、对于可恢复的情况下使用受检异常,对编程错误使用运行时异常
五十九、避免不必要地使用受检的异常
受检的异常时Java程序设计语言的一项很好的特性。与返回代码不同,它们强迫处理异常的条件,大大增强了可靠性。过分的使用导致API非常不方便。
六十、优先使用标准的异常
1、使你的API更加易于学习和使用,因为它与程序员已经熟悉的习惯用法是一致的。2、对于用到这些API的程序而言,它们的可读性会更好,因为它们不会出现很多程序员不熟悉的异常。