Java开发规约
【摘要】 一、编程规约
命名风格
抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类命名以Test结尾。布尔类型的变量不要加is前缀。如果模块、接口、类、方法使用了设计模式,应在命名时体现出具体模式。暴露出来的服务一定是接口,内部的实现类用Impl后缀与接口区别。枚举类名建议带上Enum后缀,成员名称全部大写,单词之间用下划线隔开。获取...
一、编程规约
命名风格
- 抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类命名以Test结尾。
- 布尔类型的变量不要加is前缀。
- 如果模块、接口、类、方法使用了设计模式,应在命名时体现出具体模式。
- 暴露出来的服务一定是接口,内部的实现类用Impl后缀与接口区别。
- 枚举类名建议带上Enum后缀,成员名称全部大写,单词之间用下划线隔开。
- 获取单个对象的方法用get作为前缀。
- 获取多个对象的方法用list作为前缀。
- 获取统计值的方法用count作为前缀。
- 插入的方法用save/insert作为前缀。
- 删除的方法用remove/delete作为前缀。
- 修改的方法用update使为前缀。
- 数据对象:xxxDO。
- 数据传输对象:xxxDTO。
- 展示对象:xxxVO。
- 不要使用一个常量类维护所有常量,要按常量功能进行归类,分开维护。
- 采用4个空格缩进,禁止使用Tab控制符。
- 注释的双斜线与注释内容之间有且仅有一个空格。
- 多个参数逗号后边必须加一个空格。
OOP规约
- 直接用类名访问静态成员,避免通过一个类的对象引用访问此类的静态变量或静态方法,造成无谓的编译器解析成本。
- 所有覆写的方法,必须加@override注解。
- 不使用过时的类或方法。
- 构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,要放在init方法中(java web)。
- 在循环体内,字符串的连接方式使用StringBuilder的append方法进行扩展。
- 不允许被继承的类,使用final关键字修饰。
- 不允许修改引用的域对象,使用final关键字修饰。
- 不允许重写的方法,使用final关键字修饰。
- 不允许运行过程中重新赋值的局部变量。
- 不允许外部直接通过new来创建对象,那么构造方法必须限制为private。
- 工具类不允许有public或default构造方法。
- 类非static成员变量并且与子类共享,必须限制为protected。
- 仅在本类中使用的变量,必须限制为private。
- 仅在本类中使用的方法,必须限制为private。
- 类成员方法仅对继承类公开的,必须限制为protected。
集合处理
- 不要在foreach循环中进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁。
- 使用entrySet遍历集合K/V,而不是用keySet方式遍历。
并发处理
-
获取单例对象需要保证线程安全,其中的方法也要保证线程安全。
注释规约 -
所有枚举字段必须加注释说明数据字段的用途。
其他
- 获取当前毫秒数用System.currentTimeMillis()而不是用new Date().getTime();
二、异常日志
异常处理
-
finally块必须对资源对象、流对象进行关闭操作。如果有异常也要做try-catch操作。
日志规约 -
日志文件推荐至少保存15天,因为有些异常具备以周为周期发生的特点。
三、单元测试
1、编写测试代码应遵守BCDE原则,以保证被测试模块的交付质量。
B:Border,边界值测试,包括循环边界、特殊取值、特殊时间点、数据顺序等。
C:Correct,正确地输入,并得到预期的结果。
D:Design,与设计文档相结合,来编写单元测试。
E:Error,强制错误信息输入(如非法数据、异常流程、非业务允许输入等),并得到预期的结果。
四、安全规约
- 隶属于用户个人的页面或者功能必须进行权限控制校验。
- 用户敏感数据禁止直接展示,必须对展示数据进行脱敏。
- 用户输入的SQL参数严格使用参数绑定或者METADATA字段值限定,防止SQL注入,禁止字符串拼接SQL访问数据库。
- 用户请求传入的任何参数必须做有效性验证。
- 禁止向HTML页面输出未经安全过滤或未正确转义的用户数据。
五、MySQL数据库
建表规约
- varchar是可变长字符串,不预先分配存储空间,长度不要超过5000个字符,如果存储长度大于此值,则应定义字段类型为text,独立出来一张表,用主键来对应,避免影响其他字段的索引效率。
- 表必备三个字段:id、gmt_create、gmt_modified。
- 表的命名最好加上“业务名称_表的作用"。
- 库名与应用名称尽量一致。
- 当单表行数超过500万行或者单表容量超过2GB时,才推荐进行分库分表。
索引规约 - 超过3个表禁止join。需要join的字段,数据类型必须绝对一致;当多表关联查询时,保证被关联的字段需要有索引。
- 页面搜索严禁左模糊或者全模糊,如果需要请通过搜索引擎来解决。
SQL语句 - 禁止使用存储过程,存储过程难以调试和扩展,更没有移植性。
- 不得使用外键与级联,一切外键概念必须在应用层解决。
- 在代码中写分页查询逻辑时,若count为0应直接返回,避免执行后面的分页语句。
谢谢阅读。
文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_40763897/article/details/89515347
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)