`

编写高质量的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方法会检查当前对象在字符串对象池中是否有字面值相等的字符串,有的话则指向该引用;无的话才放在池中。

 

准确适用StringStringBufferStringBuilder

String是不可改变的量,创建后不再修改;

StringBuffer是一个可变字符串,StringBufferappendString的“+”的区别的,+之后对应的引用变了,StringBuffer的引用不变值在变。

StringBuilder是线程不安全的 StringBuffer是线程安全的

 

建议使用UTF8编码

 

中文字符串排序最好指定Collector排序

Comparator c = Collector.getInstance(Local.CHINA);

Arrays.sort(sre,c)

 

异常

提倡异常封装:尽量try catch 不抛出

采用异常链传递异常

不要再finally中处理返回值

 

多线程合并发

不推荐覆写start方法

不用过时的stop方法停止线程

 

性能和效率

不在循环条件中计算

除非必要,不要克隆对象

调整JVM参数

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics