序
此开发规范是本人工作三年所自己总结的比较好的代码规范,仅供参考!且此文章会不断更新好的代码规范,仅供参考!仅供参考!重要的事情说三遍。
最外层的maven项目结构不做讨论,都是按照业务来搭建对应的工程。结构可以自行灵活变更。
项目结构搭建(以web项目做参考)
java包下面分为2层 framework负责项目框架的相关内容,web负责网页接口相关内容,具体如下。
framework部分
这一部分主要存放的就是项目的配置信息、拦截器、监听器、过滤器等等相关配置,其中细节就不说了,总而言之就是与业务无关的一些配置信息。
web部分
这一部分顾名思义就是放的springmvc等web内容了,也就是和业务相关的内容。
注:在这个包下所有东西都是和业务相关的东西。
common包
包中所对应的东西都是和业务相关的东西。
controller包
1.controller层一个模块一个包,一个controller.java 对应一个页面所有按钮查询等相关信息,一个controller尽量只注入一个service,如果需要掉其他service的方法可以在自己的service中注入对应的service。
2.controller层不做任何的业务逻辑,只进行逻辑判断并且返回值。
3.controller层的接口一定要加上swagger相关注解且严格遵循Restful风格。(Restful不多做解释)
4.结构可以灵活变通。
service包
1.service层为业务层,编写相关业务代码。
2.service层可以注入其他service也可以注入其他dao,一切以业务清晰为主,请勿在自己的service层写其他不符合自己业务的相关业务。如觉得不合适可以再加一层。
3.service层所有方法上面都必须写上对应的注解,注解主要为方法大致内容、作者、时间、入参、返回值。如果对此方法进行修改@author中应该加入自己的名称。
4.业务代码中关键或复杂部分必须要打印相关日志。
5.结构可以灵活变通。
dao包
1.项目中大多可能存在多个数据源所以首先要按照数据源分包,其次再按照对应的模块分包。
2.注解内容和service层基本相同。
3.xml层的结构参照dao层。
4.结构可以灵活变通。
pojo包
1.entity包主要存放与数据库字段一一映射的实体。所有对象名称已Entity结尾。
2.dto包主要存放前端入参的封装的接受实体。所有对象名称已Dto结尾。
3.vo包主要存放返回值的封装的相关实体。所有对象名称已Vo结尾。
4.一定要加上swagger相关注解方便前端对接。
5.一定要加上validate的相关注解,规则可参考数据库或者业务相关信息。 注解可参考文章: www.cnblogs.com/strongmore/…
6.结构可以灵活变通。
schedule包
1.主要存放定时任务的相关文件。
2.结构可以灵活变通。
feign包
1.主要放其他微服务调用此服务的相关文件包。
2.具体要求可以参考controller层。
其他细节补充
1.请求路径中不可重复出现某一单词,如:GET /user/get-user,该应是:GET /user;不可使用驼峰命名方式。(这个都可以自己定义要求但是一定要统一规范)
2.参数要严格控制,不必要的字段不要返回给前端;更新、删除等操作必须要加入版本控制实现【幂等】。
3.接口中的参数按功能区分,如:XXXUpdateDto、XXXInsertDto、XXXListVo、XXXDetailVo 等。
4.Service 中禁止使用 for 一条一条更新或者查询数据,使用批量方法。
5.字段按需求更新,禁止表的全字段更新。如:更新状态就是更新状态。
6.Service/Dao层方法命名规约 (其他规约参照 Alibaba 开发手册)。
1). 获取单个对象的方法用 `get` 做前缀。
2). 获取多个对象的方法用 `list` 做前缀。
3). 获取分页的对象方法用 `page`做前缀。
3). 获取统计值的方法用 `count` 做前缀。
4). 插入的方法用 `insert` 做前缀。
5). 删除的方法用 `remove/delete` 做前缀。
6). 修改的方法用 `update` 做前缀。
7). 校验的方法用 `check` 做前缀。
8). 导入导出方法 `import/export` 做前缀
7.代码提交必须添加备注,写明此次提交内容,内容太杂则分批次提交。代码使用 IDEA 默认风格进行格式化【Ctrl + Alt + L】,使用【Ctrl + Alt + O】优化导入,然后在提交。或者
8.idea中的黄色警告都需要处理,也可以下载阿里的代码规约插件来检测自己的代码。
尾
都是仁者见仁智者见智的规范。阿里的规范可以多多阅读。也请各位大佬多提意见,逐步完善此规范。
祝各位都成为有着良好开发习惯的优秀开发。