Springboot 编码规范
1.规范的意义和作用
- 编码规范可以最大限度的提高团队开发的合作效率
- 编码规范可以尽可能的减少一个软件的维护成本 , 并且几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护
- 编码规范可以改善软件的可读性,可以让开发人员尽快而彻底地理解新的代码
- 规范性编码还可以让开发人员养成好的编码习惯,甚至锻炼出更加严谨的思维
2.代码仓库规范
2.1公共组件
- 公共组件通常指Java库,提供特定问题的处理程序包
- 公共组件仓库地址:https://git.company.com/java-library-group
- 公共组件的坐标命名规范
- 分组编号:<groupId>com.company.library</groudId> 固定取值
- 组件名称:<artifactId>name</artifactId> name根据组件名称定义
- 组件版本:<version>x.y.z</versio> x.y.z根据组件实际版本情况定义
2.2服务组件
- 服务组件通常指可以独立部署,运行,维护的服务程序包
- 服务组件仓库地址:https://git.company.com/server-microservice-group
- 应用组件的坐标命名规范
- 分组编号:<groupId>com.company.server</groudId>固定取值
- 组件名称:<artifactId>name</artifactId> name根据组件名称定义
- 组件版本:<version>x.y.z</versio> x.y.z根据组件实际版本情况定义
3开发环境规范
- 开发环境:JDK1.7+
- 开发工具:IntelliJ IDEA 2017(安装Lombok Plugin)
- 构建工具:Maven3.x
- 代码管理工具:Git /TortoiseGit
4.项目结构规范
4.1简述
一个项目对应代码仓库中的一个仓库,项目结构是指一个基于Maven创建的项目目录结构。公共组件项目,通常会创建一个Maven普通项目。服务组件项目,通常会创建一个Maven聚合项目,并在聚合项目目录下创建多个继承Maven聚合项目的Maven模块,它们一起作为服务组件项目的组成部分。
4.2项目名
- 要求
- 英文名称,作为仓库,项目,项目根目录,组件(公共组件,服务组件)的名称
- 中文名称,用于代码仓库的描述
- 项目名称和代码仓库的名称保持一致
- 定义
- 项目名称通常由团队负责人确定
- 示例
- 项目中文名:人脸数据仓库
- 项目英文名:data-warehouse-face
- 项目目录名:data-warehouse-face
- 项目仓库地址:https://git.company.com/server-microservice-group/data-warehouse-face.git
- 初始版本:1.0.0
- 示例是一个服务组件,根据上面定义的信息确定该服务组件的Maven坐标命名:
<groupId>com.company.server</groupId>
<artifactId>data-warehouse-face</artifactId>
<version>1.0.0</version>
4.3模块命名
- 要求
- 模块名称:{项目名称}-{模块名称} 模块名称简洁体现职责
- 模块名字作为模块组件的名称
- 示例
- 人脸数据仓库的数据接入模块名称:data-warehouse-face-access
4.4项目目录
- 项目目录遵循Maven约定目录格式
4.5源码目录
- 源码目录指:{项目目录}/src/main/
- 打包定义目录:src/main/assembly
- 代码目录:src/main/java
- 资源目录:src/main/resources
- /db:数据库脚本归档
- /data:内部依赖数据归档
- 文档目录:src/main/docs
- 脚本目录:src/main/bin
- run-manage.sh 运行管理脚本(通过参数start, stop, status, help info控制程序运行)
- sh:服务组件启动脚本
- sh:服务组件停止脚本
5.编码规范
5.1包规范
- 项目基本包:com.company.{项目英文名(较长时适当简化)}.{模块名(可选)}
- config:配置类
- startup:与服务启动相关的类
- client:提供客户端实现的相关类
- common:公共类,定义常量类,组件
- entity: 数据库相关的实体类
- model:数据模型类(参数模型,数据传输模型等)
- control:控制层接口
- service: 服务层
- dao:数据库访问层
5.2日志记录
- 统一使用SLF4j接口
5.3异常处理
- 运行时异常:通过参数检查等方式避免或抛出运行时异常,日志记录
- 检查异常:检查异常需要捕获,处理,日志记录
5.4接口定义
- 原则
- 接口地址定义表明用意
- 接口地址定义清晰,简洁,无歧义
- 同一个服务组件的接口定义具有一致性
- 格式
- 控制类的顶层地址格式:/{顶层分类名},例如:/library 人员库相关接口的顶层地址
- 接口定义使用Swagger的API注解说明
- 标注完整的请求信息,请求方法,请求地址,参数可选性,接口描述
- 请求方式
- GET URL-Params
- POST Form-Data
- POST RequestBody(JSON格式)
- POST Mulitpart
- 响应方式
- 统一的响应模型
5.5辅助工具
- 字符串处理:apache common-lang3
- 时间日期处理:joda-time
- JSON处理:Gson,Fastjson
- 集合扩展工具:guava
- 文件和流处理:commons-io
- 编解码:commons-codec
- 建议:尽可能使用开源组件
5.6代码注释
- 类,接口,枚举顶层注释
- 接口方法注释
- 静态方法注释
- 公开方法注释
- 类的属性字段注释
- 常量注释
- 不限于以上
6.代码控制规范
6.1拉取原则
- 强制
- 每日开始工作拉取
- 约定
- 提交之前拉取
6.2提交原则
- 强制
- 提交代码必须构建成功(比如:编译,打包成共)
- 提交代码必须完整(比如:少提文件)
- 提交代码必须忽略到本地临时文件(比如:target, logs, .idea, *.iml,dist 等)
- 约定
- 完成一个功能提交
- 修改一个Bug修改提交
- 解决冲突提交
- 每日结束工作提交
6.3提交注释
- 强制
- 中文填写注释
- 注释反映本次提交变更情况
- 约定
- 注释描述添加前缀,前缀如下
- [创建] 通常在项目创建时使用
- [新增]
- [修改]
- [删除]
- [修复-number] 修复Bug使用,number是Bug编号
7.构建规范
7.1公共组件构建规范
- 构建输出组件包
- 构建输出组件源码包
- 构建发布到公司私有仓库
7.2服务组件构建规范
- 服务组件包命名:{组件名称}-{版本号}-bin.zip
- 构建输出到工程根目录下的dist/{组件名称}-{yyyyMMddHH}目录
Springboot 编码规范的更多相关文章
- Android的编码规范
一.Android编码规范 1.学会使用string.xml文件 在我看来,当一个文本信息出现的次数大于一次的时候就必须要使用string.xml 比如一个保存按钮 , 不规范写法: <Butt ...
- PHP 高级编程(1/5) - 编码规范及文档编写
PHP 高级程序设计学习笔记20140612 软件开发中的一个重要环节就是文档编写.他可以帮助未来的程序维护人员和使用者理解你在开发时的思路.也便于日后重新查看代码时不至于无从下手.文档还有一个重要的 ...
- 【原】JAVA SE编码规范
/* * 编码规范: * 1.所有的命名遵循"见名知意"的原则 * 2.所有的命名不允许使用汉字或拼音 * 3.Java的工程命名建议使用小写,比如:oa.crm.cms... * ...
- 浅谈Android编码规范及命名规范
前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 ...
- PHP编码规范PSR-2
.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...
- Objective-C开发编码规范【转载】
概要 Objective-C是一门面向对象的动态编程语言,主要用于编写iOS和Mac应用程序.关于Objective-C的编码规范,苹果和谷歌都已经有很好的总结: Apple Coding Guide ...
- 前端编码规范之CSS
"字是门面书是屋",我们不会去手写代码,但是敲出来的代码要好看.有条理,这还必须得有一点约束~ 团队开发中,每个人的编码风格都不尽相同,有时候可能存在很大的差异,为了便于压缩组件对 ...
- 前端编码规范之JavaScript
上次浅谈了下关于CSS的编码规范,大部分童鞋持赞同意见,仍存在一些童鞋不太理解这些规范的意义. 如果是个人或者小作坊开发,其实这些所谓的编码规范也没啥意思,因为大家写好的代码直接就给扔到网上去了,很少 ...
- Java Script 编码规范【转】
Java Script 编码规范 以下文档大多来自: Google JavaScript 编码规范指南 Idiomatic 风格 参考规范 ECMAScript 5.1 注解版 EcmaScript ...
随机推荐
- Py-apply用法学习【转载】
转自:https://blog.csdn.net/anshuai_aw1/article/details/82347016 1.Apply Python中apply函数的格式为:apply(func, ...
- 源代码下载 作者:王先荣(Xianrong Wang)
作者:王先荣(Xianrong Wang) 下面是我的一些源代码: 1. 图像处理学习系列源代码——包括该系列文章的几乎所有代码: 1.5. 图像处理学习系列中用到的dll文件包——将这个解压缩之后放 ...
- http 之 HTTP_X_FORWARDED_FOR
原文 http://www.imququ.com/post/x-forwarded-for-header-in-http.html 主题 HTTP Nginx 我一直认为,对于从事 Web 前端开 ...
- bzoj3196: Tyvj 1730 二逼平衡树 树套树
地址:http://www.lydsy.com/JudgeOnline/problem.php?id=3196 题目: 3196: Tyvj 1730 二逼平衡树 Time Limit: 10 Sec ...
- mysql数据安装问题汇总
1.mysql安装冲突:conflicts with file from package 看到“conflicts”,是产生冲突了,文件“/usr/share/mysql/charsets/*”需要M ...
- MyEclipse2014+JDK1.7+Tomcat8.0+Maven3.2 开发环境搭建
1.JDK的安装 首先下载JDK,这个从sun公司官网可以下载,根据自己的系统选择64位还是32位,安装过程就是next一路到底.安装完成之后当然要配置环境变量了. ————————————————— ...
- Spring IOC 源码分析
Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器.既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文 ...
- P4878 [USACO05DEC]layout布局
P4878 [USACO05DEC]layout布局 差分约束 最短路径最长路,最长路径最短路 本题求的是最长路径,所以跑最短路 根据题意连边,然后spfa即可 注意要判断图的连通性,所以新建一个虚拟 ...
- Eclipse中把Java工程修改成web工程
Eclipse中把Java工程修改成web工程 点击项目:右击:选择properties--输入project facets,将“Dynamic Web Module”打勾即可:
- 20145101《Java程序设计》第8周学习总结
20145101<Java程序设计>第8周学习总结 教材学习内容总结 第十四章 NIO与NIO2 NIO使用频道(channel)来衔接数据节点,对数据区的标记提供了clear(),rew ...