个人工作开发规范总结,慢慢积累,慢慢进步,写出无可挑剔的代码
1 java 开发规范
1.1 校验规范 字符串判空:org.apache.commons.lang3.StringUtils.isBlank(str); 字符串处理使用StringUtils包处理
对象拷贝:BeanUtils#copyProperties 对象拷贝使用BeanUtils处理
数组校验:CollectionUtils.isEmpty()
1.2 批量查询 批量查询接口必须对传入的数组或者不定长度的变量进行校验,避免出现一些恶意查询的情况出现。
1.3 当实体类里面使用了枚举,必须对在实体类中对使用了枚举的字段添加@See注解
1.3 代码提交之前必须对代码进行格式化,(ctrl+alt+l ) 并且必须对代码的导包进行优化 快捷键(ctrl+alt+o)或者使用idea的默认配置实
现
1.4 java开发编码环境设置统一设置为utf-8
1.5 命名要有节操,不能中英文混用,不要首字母缩写,单词要移动有实际意义。驼峰命名
1.6 未使用的包不要引用(ctrl+alt+o 删除未引用的导包)
1.7 尽量减少循环嵌套层次。尽量少,不可避免时,应该通过注释表明每一个循环的开始和结尾分别在什么地方
1.8 使用泛型必须指明具体类型
1.9 拼接字符串,有节操的都不会使用string+(String的不可变性)
1.10 map遍历,使用entrySet遍历map集合kv,不要使用keySet方式进行遍历。
1.11 使用spring框架进行对象注入时候,需要清楚 #Autowired和Resource的区别,建议使用@Resource
1.12 当构造函数参数过多时,建议使用builder模式
1.13 避免创建不必要的对象,比如在使用正则表达式时,将 Pattern.compile 方法设置为静态方 法,避免重复编译,使其只在方法区中编译成一个对象。
1.14 尽量使用try-with-resources代替try-cache-finally
1.15 设计类的成员可访问性最小化
2 数据库开发规范
2.1更新操作:数据库干的更新操作必须 按照功能来区分,不能混用,一般一个update只进行一个更新操作
2.2 使用持久层框架时候,需要明白# {}${}的区别,一般不到不得已的时候都是用#{} 当需要使用${} 的时候,必须要对传入的参数进行过滤
2.3 一般来说,一张表对根据需求建立一个索引,(建议一张表的额索引不要超过五个),sql编写的时候一定要注意尽量命中索引。
2.4 模糊查询,注意要命中索引哦 附,建议每一条重要的sql都要在终端explain一下,查看一下执行计划,sql出现问题都会是重大问题、
3 缓存使用规范
3.1:对某个表内的数据进行缓存时候,需要慎重,因为在大型项目里面,你可能不知道有多少个地方对这个表进行了crud操作,需要在这 些 操作的地方都添加上删除缓存的操作,不然很容易产生数据不能及时更新的bug
3.2:缓存批量请求key的时候,service需要对请求的key的长度进行限制。
4 异常处理规范
1 rpc调用时,必须进行异常捕获。
2 异常信息不允许返回给前端
3 异常信息记录时候,必须同时记录接口参数,让异常能够准确定位到某一个用户。
4 当涉及到有资源比如inputstream需要关闭时,必须使用finally进行关闭,(确保任何状态下资源都会被正常关闭)
5 异常记录
5 日志规范
1.避免无效日志打印
2 日志记录必须带着类名+方法名+入参+异常日志
3 大量无用日志会拖慢系统性能,也会增加我们查找日志的难度。日志记录,要明确为什么记录日志,这个日志能解决什么问题,哪些地方可 能会出 现这些问题,在这个基础上,尽量少记日志,
4 不要在循环中记录日志
5 生产环境需要关闭debug日志,我遇到过这个问题,自己买的服务器上线一个demo,一个月自动产生40G垃圾日志文件,系统出现异常。
6 备注规范
1 给每个方法都添加必要的注释,主要应包括 创建时间,创建人,主要功能描述,相关文档地址
2 给每一个方法都添加注释 建议使用 使用Idea提供的代码模板进行备注(注释模板需要在方法体内进行使用才能获得正确的信息)
模板:
/**
* Method: $methodName$
* Param: $param$
* Return: $return$
* Author: $user$
* Creation: $date$ $time$
* Description: $END$
*/
3 实体类每一个字段都需要有中文注释
4 有手动编写的构造函数时候,建议给构造函数添加注释
5
项目模块结构
编码规范(EOS)\SQL规范
数据库(连接池配置,mybatis配置)
事务使用
异常处理
分布式锁
并发框架
读写分离组件
监控使用
上传下载组件
唯一ID生成器
JSON序列化组件
参数校验组件
单元测试使用
安全规范