- 命名不能以下划线开始和结束
- 常量统一大写
- 抽象类名Abstract开头,异常类Exception结尾
- POJO布尔类型不要加is前缀
- 包名统一小写,单数
- 接口实现类加Impl后缀
- 不允许魔法值(未经预先定义的常量)
- Long类型赋值后接大写L
- 关键字if/for/while/switch/do等和括号之间加空格
- 4个空格为缩进
- 注释和双斜线(//)之间有且仅有一个空格
- 单行字符数不超过120个
- 多个参数之间逗号(,)加一个空格
- Encoding设置UTF-8,中文换行符使用Unix
- 直接使用类名.静态变量/静态方法,不要实例化
- 调接口,不能修改方法签名(方法名+参数列表)
- 相同类型包装类比较值,用equals
- 所有POJO类属性使用包装数据类型
- RPC方法的返回值和参数使用包装数据类型
- 局部变量使用基本数据类型
- 构造方法禁止加业务逻辑,可加在init方法中
- POJO必须重写tostring方法
- 禁止POJO中同时存在isxxx和getxxx方法
- 多个构造方法,应该按顺序放置一起
- 重写equals,必须重写hashCode
- 集合转数组,必须使用集合的toArray
- 禁止在foreach循环里进行元素的remove和add操作
- 集合初始化时,指定集合初始值大小
- 线程池禁止使用Executors创建,需通过ThreadPoolExecutors
- switch块中,每个case后接break/return终止,或加注释,最后需加default语句,即使空代码
- if/else/do/while/for后接大括号,避免采用单行编码
- if禁止超过3层
- 类、类属性、类方法,必须使用javadoc(/** */)注释,不得使用//
- 所有类必须添加创建者和创建日期
- 方法内部单行注释//,在语句上方使用,多行使用/* */
- 所有枚举类型字段必须有注释,说明字段用途
- velocity调用POJO属性,直接调用属性名取值
- 后台输出给页面的变量$!{var},中间加!
- 想获取随机整数,直接使用Random的nextInt和nextLong,不要用Math.random()方法放大取值
- 使用System.currentTimeMillis()来获取当前的毫秒数
- 异常不要用来做流程控制语句,条件控制
- 异常捕获后要处理,或者抛给它的调用者
- 不要在finally块中使用return
- finally块必须对资源、流对象进行关闭
- 日志应依赖日志框架SLF4J的API
- 日志至少保存15天
- 避免重复打印日志,日志配置文件中设置additivity=false
- 生产环境禁止输出debug日志,有选择地输出info日志
- 好的单元测试必须遵守AIR原则(自动化、独立性、可重复)
- 单元测试至多是类级别,一般是方法级别
- 用户输入的SQL参数严格使用参数绑定或METDATA字段限定
- 数据库表达是否的字段,必须使用is_xxx命名,数据类型是unsigned tinyint
- 表名和字段名必须使用小写或数字,下划线不能有数字
- 表名不使用复数名词
- 主键索引px_,唯一索引uk_,普通索引idx_
- 小数类型用decimal,禁止使用float和double
- 表必备三字段:id, gmt_create, gmt_modified
- 超过三个表禁止使用join
- 当某列的值全为null时,count(clo)的返回结果是0,sum(col)返回结果为null,所以使用sum函数需注意NPE问题
- 使用ISNULL()来判断是否为NULL值
- 禁止使用存储过程
- 数据订正(删改)时,要先select
- 表查询,不要使用 *
- sql.xml配置参数使用#{},可以防止sql注入
- 禁止拿hashmap和hashtable作为查询结果集输出
- 禁止使用外键
- 禁止使用存储过程和视图
- Redis禁止使用select,禁止生产环境使用monitor命令
Java代码规范总结(参考阿里巴巴Java开发手册)
最新推荐文章于 2024-05-11 18:34:18 发布