一、基本开发规范
【强制】把IDE 的Preferences/General/Workspace设置中的 text file encoding 设置为 UTF-8,文件的换行符设置为Unix格式,不要使用windows格式。
【强制】java包命名全部小写。类名使用 UpperCamelCase 风格(首字母大写,不同单词首字母大写),DTO、DAO等后缀例外。
【强制】方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格(首字母小写,不同单词首字母大写)。
【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
【强制】POJO 类中的任何布尔类型(boolean)的变量,都不要加 is,否则部分框架解析会引起序列化错误。
【强制】代码块缩进 4 个空格,如果使用 tab 缩进,请设置成 1 个 tab 为 4 个空格。【强制】方法参数在定义和传入时,多个参数逗号后边必须加空格;任何运算符左右必须加一个空格——可以通过Ctrl+Shift+F进行格式化。
【强制】不允许使用过时的(@Deprecated)类和方法
二、包命名规范
★ 包命名规范:com.ayu.系统名[.子系统名|模块名].功能名
其中:com.ayu.是固定的包名,系统名为项目名。
比如:开发平台名称为platform,那么:com.ayu.platform.为开发平台的基础包名。
包名命名原则是每个项目的基础包名都不一样,从而保证全公司所有软件系统模块都有独立命名空间,保证模块拆分和合并不会造成代码冲突。
★ 模块下各个包命名规范:
dto包:放和数据库表对应的POJO;
dao包:放mybaits的Mapping文件和DAO接口类;
controller包:放spring mvc的controller层代码类;
rest包:放restful服务类;
service包:放实现业务逻辑的service类,以及api包中接口的实现类;
api包:放为RPC暴露的接口。
三、类名命名规范
类名要用名词或名词短语定义。
不同功能类别下类的命名规则如下(SSM框架内的代码,基本都可以通过工具生成):
Controller:业务名称+ Controller;
Rest:业务名称+ Rest;
Api:功能+Api;
Service:功能+Service;
dto:表名+DTO;
dao:表名+DAO;
Filter:业务名称+Filter;
抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。
四、代码注释规范
★ 文件注释:在每个文件的头部都应该包含该文件的功能、作用、作者(必须是中文姓名)、日期以及创建、修改记录等。并在其中使用SVN标记自动跟踪版本变化及修改记录等信息。注意是/**/注释。
★ 类注释:在类、接口定义之前当对其进行javaDoc注释,包括类、接口的目的、作用、功能、继承于何种父类,实现的接口、实现的算法、使用方法、示例程序等,在作者和版本域中使用SVN标记自动跟踪版本变化等,具体参看注释模板。
★ 方法注释:依据标准JavaDoc规范对方法进行注释,以明确该方法功能、作用、各参数含义以及返回值等。参数注释时当注明其取值范围等;返回值当注释出失败、错误、异常时的返回情况,什么情况返回null;异常当注释出什么情况、什么时候、什么条件下会引发什么样的异常。
五、数据库事务规范
★ 系统的数据库事务控制在Service层,统一通过Spring的AOP进行配置管理,所有数据库的增删改操作必须进行统一的事务控制。
★ 新增操作方法名必须以insert开头;更新操作方法名必须以update开头;删除操作方法名必须以delete开头;查询单个对象的操作方法必须以get开头;查询数据列表的操作方法必须以query或select开头,或get****List。
六、Rest规范
Rest类上必须使用注解@Controller。
Rest服务路径规范(Rest类上的注解@RequestMapping):/api/子系统/模块名/类名
方法上的注解@RequestMapping:/方法名/版本号