编码规范
2022-07-20 14:28:52 2 举报
AI智能生成
编码规范及技巧
作者其他创作
大纲/内容
编码规范
Java
命名
包
[遵守] 常用包名命名: controller 或 api, config, service, dao, model, util
类
VO(View Object):视图对象,用于展示层
DTO(Data Transfer Object):数据传输对象
DO(Domain Object):领域对象,业务实体
PO(PersistentObject):持久化对象
Form
表单对象
方法
变量
代码工程中各层作用
[遵守] Controller 层: 初级鉴权, 请求参数校验, 请求内容补全或修正, 返回格式修正剪裁
[遵守] Service 层: 主要业务, 允许二次鉴权, 不应直接使用 (类) SQL 跳过 Dao 层直接操作数据库
[遵守] Dao 层: 不应包含直接的业务逻辑, 对复用友好
spring相关
bean注入推荐方式
controller 返回值规范
推荐的第三方工具包
对象转换
原则
在不稳定的对象中加入转换的方法
Po就是稳定对象,VO 和 Form就是不稳定对象
在非基础对象中加入转换方法
示例
在B对象中将A 对象转换为B对象,则在B对象中加入of() 方法
在B对象中将B 对象转换为A对象,则在B对象中加入toA() 方法
Imodel<T>
flyway
Migration(迁移) 文件命名规范是什么
文件格式采用 {V|U|R}{日期}_{时分}__{主题}_{类型}.sql (官方命名文档: Naming)
时间采取 UTC 时区
类型可以是 ddl 和 data, 分别是对表结构的增改, 对数据的增改
主题应简要明确, 具体到表或者模块
[遵守] Migration 文件不应含有因环境不同而变化的数据, 这部分数据应使用其他方式存放, 而不应改由 flyway 进行管理
日志规范
使用的框架
日志文件规范
存储
路径
推荐 "/data/logs/{application}"
[建议] 根据情况, 考虑将日志压缩归档, 节省存储空间
日志切分
应设置日志切分, 按天或按小时切分日志
[推荐] 每份切分的日志文件大小应设置上限, 根据情况可设置为如 100MB, 500MB, 1GB
命名
命名上至少应满足: '{level}-{date}.{seq}.log'
最小保存天数
日志至少应保留一定天数, 如 7天
输出内容规范
内容
可追溯
充分且必要的信息和上下文
准确性
安全性
是否有敏感信息
性能
长文本截断
使用 isDebugEnabled isInfoEnabled 等前置判断, 或使用 Logs.lazy(...)
无副作用
位置
是否方便溯源(调用链)
格式
可读性
其他
作用
记录用户操作的审计日志,符合监管要求
快速定位问题的根源
追踪程序执行的过程
追踪数据的变化
数据统计和性能分析
采集运行环境数据
等级
fatal - 严重的,造成服务中断的错误;
error - 其他错误运行期错误;
warn - 警告信息,如程序调用了一个即将作废的接口,接口的不当使用,运行状态不是期望的但仍可继续处理等;
info - 有意义的事件信息,如程序启动,关闭事件,收到请求事件等;
debug - 调试信息,可记录详细的业务处理到哪一步了,以及当前的变量状态;
trace - 更详细的跟踪信息;
0 条评论
下一页
为你推荐
查看更多