一、构造器参数太多

       1、用建造者设计模式

       2、用JavaBeans模式,

       3、get和set

二、不需要实例化的类应该构造器私有

三、不要创建不必要的对象

        比如自动装箱Long a = 1L,可以在多个实例中重用的成员变量使用static

四、避免使用终结方法

       比如finalizer()

五、使类和成员的可访问性最小化

        在引用的范围中使用最小化的访问权限

六、使可变性最小化

       不提供任何可以修改对象状态的方法;

       使所有的域都是final的。

       使所有的域都是私有的。

       使用写时复制机制。

七、复合优先于继承

      继承容易破坏封装性,而且会使子类的实现依赖于父类。

      复合则是在类中增加一个私有域,引用类的一个实例,这样的话就避免了依赖类的具体实现。   

      只有在子类确实是父类的一个子类型时,才比较适合用继承。

      继承需要开发者对父类的结构有一定了解。 

     实际使用,如果肯定是父类的子类,使用继承,如果不很肯定,使用复合

八、接口优于抽象类

九、返回零长度的数组或集合,不要返回null

       方法的结果返回null,会导致调用方的要单独处理为null的情况。返回零长度,调用方可以统一处理,如使用foreach即可

十、优先使用标准的异常

十一、用枚举代替int常量

十二、将局部变量的作用域最小化

十三、精确计算,避免使用float和double

        float和double在JVM存储的时候,有部分要做整数位,有部分要做小数位,所以存在精度上的问题 可以使用int或者long以及BigDecimal

十四、字符串连接

       在存在大量字符串拼接或者大型字符串拼接的时候,尽量使用StringBuilder和StringBuffer

十五、控制方法的大小

 

参考king老师的编写高效优雅Java程序