Java开发规约

网友投稿 758 2022-05-29

一、编程规约

命名风格

抽象类命名使用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,正确地输入,并得到预期的结果。

Java开发规约

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应直接返回,避免执行后面的分页语句。

谢谢阅读。

Java SQL

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:2022CANN训练营新手模型开发课学习笔记
下一篇:SpringBoot整合redis
相关文章