- 编程规范
- 命名规范
- 【强制】不能以_或$开始,也不能以_或$结束
- 【强制】不能使用中英混合命名,更不能用中文命名
- 【强制】类名、方法名、参数名、成员变量、局部变量统一遵循驼峰形式;类名首字母大写;DO/BO/VO/DTO除外;杜绝不规范缩写,要完整语义单词
- 【强制】常量名大写,单词间用_隔开,不要怕名字长
- 【强制】抽象类使用Abstract开头,基本类以Base开头,异常类以Exception结尾,测试类以Test结尾,服务接口已Service结尾,接口实现以Impl结尾或ServiceImpl结尾,工具类以Utils结尾,枚举类以Enum结尾,控制层以Controller结尾,常量类以Constants结尾
- 【强制】包名统一用小写字母(单数)命名,类名可以用复数形式单词命名
- 【强制】常量或变量命名时,表示类型的名词放在最后,如startTime
- 【强制】接口、类、方法、模块使用了设计模式,在命名时体现设计模式
- 【强制】接口方法上不要加入任何修饰符
- 【推荐】各层命名规约
- Service/Dao/Controller层命名
- 获取单个对象方法get开头
- 获取多个对象方法以list开头,复数形式结尾,listDogs;若根据一个字段查询,list开头,By**结尾,listDogsByDogCode;若两个字段查询,list开头,By**结尾,listDogsByDogCodeAndDogName;若三个字段做为条件查询,则使用领域模型Query
- 获取统计值方法以count开头;参考上一条
- 插入方法用save或insert开头
- 删除方法用remove或delete开头
- 修改方法用update开头
- 领域模型命名
- ***Dto:数据传输对象,**为业务领域相关名称,如 表单提交犬只信息,命名DogDto
- **Vo:展示对象,**为网页名称或这一类型的视图展示
- **Query:查询对象,当查询条件超过2个时,使用此模型,可无限扩展;每一个查询对象需继承BaseQuery查询对象
- 常量定义
- 【强制】不允许出现任何魔法值直接出现在代码中,需定义在各自应用常量池中定义魔法值
- 【强制】命名long或Long类型时,必须以L结束,不能l结束,会被误认为是数字1
- 【强制】不要使用一个常量类存储常量,要按常量功能分类,分开维护,如二方库有基本常量类BaseConstants,基本缓存常量BaseCacheConstants;各个系统使用二方库,各种常量需单独维护,同时要集成二方库同等作用的常量类;如养犬系统(Dog)分为业务系统(Center)和权限系统(Upms)及公共模块(Common),需在Common下命名常量类,Center和Upms下也要各自维护常量类
- 代码格式与注释
- 【推荐】一个方法不要超过80行,尽量采用红花配绿叶形式,把共性方法提炼,不要满足于现有方法,而是要各个场景
- 【推荐】单行代码不要超过120行,超过部分换到下一行
- 编码Encoding设置为UTF-8
- 【推荐】一个方法内不同逻辑,不同业务代码之间插入一行空格,并加入注释,提升可读性
- 【强制】类、属性、方法必须加注释,使用/**内容*/形式,不得使用//**形式,避免在生成JavaDoc的时候出错
- 【强制】类、属性、方法必须加注释,说明其作用,类注释中要加入作者@author **、时间 @time **
- OOP规约
- 【强制】不能使用过时的方法
- 【强制】equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用
- 【强制】为防精度丢失,禁止使用BigDecimal(double)的方式转换,应将double转换为字符串
- 【强制】所有POJO类属性必须使用包装类,所有RPC方法返回值或参数必须使用包装类
- 【强制】使用索引访问String的split方法得到数组,或数据库查询某个集合,要做容错判断;如你明知字符串拆分能得到6个长度或集合长度为6,但也要判断,以防出现不必要的错误
- 1
- 异常日志
- 数据库
- 建表规约
- 【强制】库名、表名或字段名必须小写字母或数字,禁止数字开头,禁止两个_中间加入数字;库名尽量与应用名保持一致;表名不能用复数名词;表名命名方式**_**,第一个*是系统或模块名词,第二个*是领域名词,如权限系统的用户表 upms_user
- 【强制】字段名禁用保留字
- 【强制】字段名必须包含id(36位varchar),gmt_created(bigint),gmt_updated(bigint),is_deleted(tinyint 0/1)
- 【强制】字段类型为text时,通过外表单独互通
- SQL语句
- 【强制】不要使用count(列名)代替count(*),前者会忽略null的字段而后者不会
- 【强制】要使用ISNULL来判断是否为NULL值
- 【强制】分页查询是,若count为0,不要执行分页查询,直接返回
- 【推荐】in评估其集合数量不要超过500个
- 【强制】一切新增更新删除不要级联操作,一切外键概念全部在业务层解决
- 安全规约
- 【强制】隶属于用户个人的页面或者功能必须做权限控制校验
- 【强制】敏感数据切勿直接显示,要对其进行脱敏
- 【强制】用户输入的参数严格使用参数绑定形式注入,避免sql注入
- 【强制】在使用平台资源时,必须使用防重放机制,如短信验证码、邮件、登录、修改密码等,加入验证码校验,数量限制,IP白名单形式控制