开发规范(持续更新)
1、包的命名规范
设有公司统一包名如:com.deertech
包(根据项目单位命名),不允许直接在此包下直接建立模块,要先创建一个 modules 包。
- 模块格式:
com.deertech.modules.模块名.分层.子模块名.功能类
- 分层为 entity、dao、service、web、utils、config
- 若模块下只有几个功能,没有子模块,就不需要再建立子模块了
- Spring Boot 自动配置文件格式:
com.deertech.autoconfigure.模块名.配置类
- 自动配置的类,在
META-INF/spring.factories
里指定
- 自动配置的类,在
- 通用封装包或工具类:
com.deertech.common.大类.小类.封装类
2、分层命名规范
Controller
操作 | 命名 | 备注 |
---|---|---|
类名 | 以Controller结尾,继承BaseController | UserController |
类上的映射路径 | ${adminPath} / 模块 / 子模块 / 功能 | ${adminPath}/sys/user |
自动注入属性 | 与注入名相同,不允许注入 Dao | @Autowired |
方法上的映射路径 | 与方法名相同 | @RequestMapping |
方法上的权限字符串 | 模块名:子模块名:控制器名:功能名 | @RequiresPermissions |
每次请求都会执行的方法 | get | @ModelAttribute |
列表页面 | list | |
列表数据 | listData | |
新增或编辑表单 | form | |
新增或编辑提交地址 | save | |
删除 | delete | |
停用 | disable | |
启用 | enable | |
主键校验 | check开头 | |
导入 | import开头 | |
导出 | export开头 | |
树结构数据 | treeData |
四名保持命名联系: Controller类名、映射路径、方法名、视图文件名,举例如下:
操作 | 命名 | 备注 |
---|---|---|
类名 | SysEmpUserController.java | 系统模块可不加 Sys |
映射路径 | /sys/empUser/list | /模块[/子模块]/功能/操作 |
映射方法 | public list() {} | 功能名,如列表:list,列表数据:listData,表单:form |
视图文件名 | empUserList.html | 不要直接命名为 list.html(写全方便查找) |
视图文件路径 | /src/main/resources/views/modules/sys/empUser/ | 统一放 resources 资源目录下 |
Vue视图命名 | /src/views/sys/empUser/list.vue | 与映射路径一致 |
遵循一定的命名规范,可快速根据映射路径找到对应的源代码。
Service
操作 | 命名 | 备注 |
---|---|---|
类名 | 以Service结尾 | 继承 CrudService,TreeService,QueryService |
查询一条数据 | get | 以 get 开头 |
插入数据 | insert | 以 insert 开头 |
更新数据 | update | 以 update 开头 |
新增或编辑 | save | 以 save 开头 |
删除 | delete | 以 delete 开头 |
查询多条数据 | findList | 以 find 开头 |
查询多条分页 | findPage | 以 find 开头 |
Dao
操作 | 命名 | 备注 |
---|---|---|
类名 | 以Dao结尾 | 继承 CrudDao,TreeDao,QueryDao |
查询一条数据 | get | 以 get 开头 |
插入数据 | insert | 以 insert 开头 |
更新数据 | update | 以 update 开头 |
删除 | delete | 以 delete 开头 |
物理删除 | phyDelete | |
查询多条数据 | findList | 以 find 开头 |
Entity
操作 | 命名 | 备注 |
---|---|---|
类名 | 根据表名以驼峰命名法转换 | 继承 DataEntity,TreeEntity,BaseEntity |
主键 | @Column(isPk=true) | 指定主键的列会自动与 getId() setId() 绑定 |
验证方法 | Hibernate Validator | 例如:@Length,@NotNull,查看文档 |
注解位置 | 依据能写 get 方法上绝不写字段上原则 | |
父类中已有的属性 | 父类中已有的属性无需定义,特殊情况除外 | |
非表属性的字段 | 如查询字段,必须写清楚注释说明用途。 |
3、视图文件规范
所有视图文件均放在:模块项目/src/main/resources/views
目录下,尽量不放在web项目下,约束如下:
名称 | 说明 |
---|---|
include | 公共视图代码块 |
layouts | 公共视图布局文件 |
modules | 功能模块视图文件,格式:/modules/模块名[/子模块]/功能页面 |
themes | 个性化主题视图文件存放路径,格式:/themes/modules/模块名[/子模块]/功能页面 |
4、静态文件规范
所有静态文件均放在:模块项目/src/main/resources/static
目录下,尽量不放在web项目下,约束如下:
名称 | 说明 |
---|---|
common | 存放公共脚本,不建议项目使用过程中修改。 |
modules | 项目相关的模块 js 和 css 文件存放位置,格式:/modules/模块名[/子模块]/静态文件 |
themes | 个性化主题视图文件存放路径,格式:/themes/modules/模块名[/子模块]/静态文件 |
组件文件 | 格式:组件名/组件版本/组件文件,例如:/static/echarts/4.2/组件文件包 |
5、Vue 分离端目录规范
├── build 打包脚本相关
│ ├── config 配置文件
│ ├── generate 样式生成器
│ ├── script 编译脚本
│ └── vite vite配置
├── mock mock文件夹
├── public 公共静态资源目录
├── src 源码主目录
│ ├── api 数据接口文件
│ ├── assets 资源文件
│ │ ├── icons 图标文件夹
│ │ ├── images 图片的文件夹
│ │ └── svg svg图片的文件夹
│ ├── components 公共组件
│ ├── design 样式文件
│ ├── directives 指令
│ ├── enums 枚举/常量
│ ├── hooks hook
│ │ ├── component 组件相关hook
│ │ ├── core 基础核心hook
│ │ ├── event 事件相关hook
│ │ ├── setting 配置相关hook
│ │ └── web web相关hook
│ ├── layouts 布局文件
│ │ ├── default 默认布局
│ │ ├── iframe iframe布局
│ │ └── page 页面布局
│ ├── locales 多语言
│ ├── logics 逻辑
│ ├── App.vue 主页面
│ ├── main.ts 主入口
│ ├── router 路由配置
│ ├── settings 项目配置
│ │ ├── componentSetting.ts 组件配置
│ │ ├── designSetting.ts 样式配置
│ │ ├── encryptionSetting.ts 加密配置
│ │ ├── localeSetting.ts 多语言配置
│ │ ├── projectSetting.ts 项目配置
│ │ └── siteSetting.ts 站点配置
│ ├── store 本地存储
│ ├── utils 工具类
│ └── views 视图页面
│ ├── bpm 工作流模块
│ ├── sys 系统核心模块
│ └── test 测试功能模块
├── test 测试
│ └── server 测试用到的服务
│ ├── api 测试服务器
│ ├── upload 测试上传服务器
│ └── websocket 测试ws服务器
├── types 类型文件
├── .env 全局属性配置
├── .env.development 开发环境属性配置
├── .env.production 开发环境属性配置
├── package.json 项目信息和依赖配置
├── vite.config.ts vite配置文件
└── windi.config.ts windcss配置文件
6、其他
主键:有意义的,有规则的数据必须采用手动编码方式,不允许使用 UUID 自动生成注解表示,方便运维,例如:组织机构编码,区域编码
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Nuri Alfred - Deertech
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果