编写高质量的Java代码
Java 开发通用方法和准则
不要在变量和常量出现易混淆字母:int i=1l;
不要让常量变成变量;
三元操作符的值类型务必保持一致;
避免带有变长参数的方法重载:Java 5 引入了变长参数,varags, 用…表示,变长参数必须是最后一个参数,一个方法不能有多个变长参数;
别让null和空值影响到变长方法,主要出现在在变长方法的重载;
少用静态导入:如import static X.X.X.过多的使用可维护性下降
不要再本类中覆盖静态导入的变量和方法,小心编译器的最短路径原则:能在本类中查找到的变量、常量、方法就不会从其他包或父类中查找,确保本类的属性和方法优先。
避免在序列化的类在构造函数中为final常量赋值
易变业务使用脚本语言编写:可以随时发布不用重新部署
基本类型
用偶数判断,不用奇数判断:用i%2==0 不用i%2==1,因为i=-1时会判断成偶数
用整数类型处理货币:先扩大N倍处理运算,展示时除N倍
注意边界:如int n=1000, int input+n<2000,当输入input超过Int最大值后,input+n为负数依然满足条件
不要让四舍五入亏了一方,用RoundingMode类可避免,它可提供Round模式
Java中==是判断2个操作数是不是相等,如果是对象,则判断引用是不是一样
类、对象、方法
在接口中不要存在实现代码;
静态变量一定要先声明在赋值
不要复写静态方法
构造函数尽量简化,尽可能不抛异常,不做复杂算法
避免在构造函数中初始化其他类
使用构造代码块精炼程序:没有任何前缀,直接用{}抱起,编译器会把构造代码块直接插入构造函数的最前端;但遇到this关键字则不插入构造函数。
使用静态内部类提高封装性
让多重继承成为现实:用内部类实现
让工具类不可实例化:除了设置构造函数为private,还抛异常
使用序列化实现对象拷贝
覆写equals必须实现HashCOde方法
推荐覆写tostring方法
字符串
String对象直接赋值,不用new
Java为了避免在一个系统中产生大量String对象,设计了string池。创建机制:创建一个字符串时,先检查池中是否有字面值相等的字符串,有的话则指向该引用;无的话才创建。
Intern方法会检查当前对象在字符串对象池中是否有字面值相等的字符串,有的话则指向该引用;无的话才放在池中。
准确适用String、StringBuffer、StringBuilder
String是不可改变的量,创建后不再修改;
StringBuffer是一个可变字符串,StringBuffer的append与String的“+”的区别的,+之后对应的引用变了,StringBuffer的引用不变值在变。
StringBuilder是线程不安全的, StringBuffer是线程安全的
建议使用UTF8编码
中文字符串排序最好指定Collector排序
Comparator c = Collector.getInstance(Local.CHINA);
Arrays.sort(sre,c)
异常
提倡异常封装:尽量try catch 不抛出
采用异常链传递异常
不要再finally中处理返回值
多线程合并发
不推荐覆写start方法
不用过时的stop方法停止线程
性能和效率
不在循环条件中计算
除非必要,不要克隆对象
调整JVM参数
已有 0 人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐