Java编码习惯

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

命名(Naming)

编程语言都有自己的规范和约定,Java编程语言也不例外。命名变量的规则和约定可归纳如下:

变量命名

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

静态变量

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

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

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

代码换行

如果大括号{}中间没有内容,则无须换行。如:如一个无参的构造方法,没有任何内容,则直接写为:public User(){}。

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

字符长度限制

第二行相对第一行缩进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秒。