Java编码习惯

软件是人类自以为最有把握,实则最难掌控的技术。

命名

变量命名规则约定可归纳如下:

变量命名

变量名称区分大小写,若名称只包含一个单词,则全部小写,若由多个单词构成,每个后续单词首字母大写。

静态变量

使用类名对静态变量进行引用。

注:Oracle建议中下划线除了用在此处,其他地方命名都不建议使用,尤其类名中更不建议使用$符和_(下划线)。

随处可见的魔法常量值不建议,参考Integer.MAX_VALUE常量命名。

代码换行

若大括号{}中间没有内容,则无须换行。

如:如一个无参构造方法,没有任何内容,则直接写为:

public User(){}

左大括号{不换行,右大括号}后换行。右大括号}前换行,右大括号}后的else等代码不换行。代码结尾的右大括号}须换行。运算符与下文一起换行,方法调用符号(.)与下文一起换行,方法实参列表,在逗号后换行(如有需要),括号前不要换行。

注:建议使用GoogleJavaStyle

字符长度限制

第二行相对第一行缩进4个空格,第三行开始,不再继续缩进。

线程安全

单例模式线程安全,单纯synchronized和双重检查锁机制,不能保证初始化安全,必要时引入final关键字。

注释

单行与多行注释参考Javadoc注释规范,注释目的不在于表达代码逻辑,而是对功能作说明。很多注释像在引导新人读代码,而非对功能作注,或对一种业务场景描述。

异常处理

不要捕获RuntimeException,声明式事务在业务层try catch异常后。不在finally catch块中使用return。

日志系统

不直接调用日志系统API(Log4j、Logback),使用日志框架接口API(SLF4J,commons-logging)。日志文件保留时间一至半个月。

数据类型

数据类型规定可以存储的值,允许执行的操作。存放小数时尽量使用decimal,而非float 和double。float和double本身是为科学和工程计算设计的,采用单精度算法,较长浮点范围不保证也不提供精确值,不适用于货币计算领域。

服务器

高并发服务器time_wait参数建议不超过30,操作系统默认240秒。