Java开发规约

举报
yd_221104950 发表于 2020/12/04 01:01:52 2020/12/04
【摘要】 一、编程规约 命名风格 抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类命名以Test结尾。布尔类型的变量不要加is前缀。如果模块、接口、类、方法使用了设计模式,应在命名时体现出具体模式。暴露出来的服务一定是接口,内部的实现类用Impl后缀与接口区别。枚举类名建议带上Enum后缀,成员名称全部大写,单词之间用下划线隔开。获取...

一、编程规约

命名风格

  1. 抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类命名以Test结尾。
  2. 布尔类型的变量不要加is前缀。
  3. 如果模块、接口、类、方法使用了设计模式,应在命名时体现出具体模式。
  4. 暴露出来的服务一定是接口,内部的实现类用Impl后缀与接口区别。
  5. 枚举类名建议带上Enum后缀,成员名称全部大写,单词之间用下划线隔开。
  6. 获取单个对象的方法用get作为前缀。
  7. 获取多个对象的方法用list作为前缀。
  8. 获取统计值的方法用count作为前缀。
  9. 插入的方法用save/insert作为前缀。
  10. 删除的方法用remove/delete作为前缀。
  11. 修改的方法用update使为前缀。
  12. 数据对象:xxxDO。
  13. 数据传输对象:xxxDTO。
  14. 展示对象:xxxVO。
  15. 不要使用一个常量类维护所有常量,要按常量功能进行归类,分开维护。
  16. 采用4个空格缩进,禁止使用Tab控制符。
  17. 注释的双斜线与注释内容之间有且仅有一个空格。
  18. 多个参数逗号后边必须加一个空格。

OOP规约

  1. 直接用类名访问静态成员,避免通过一个类的对象引用访问此类的静态变量或静态方法,造成无谓的编译器解析成本。
  2. 所有覆写的方法,必须加@override注解。
  3. 不使用过时的类或方法。
  4. 构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,要放在init方法中(java web)。
  5. 在循环体内,字符串的连接方式使用StringBuilder的append方法进行扩展。
  6. 不允许被继承的类,使用final关键字修饰。
  7. 不允许修改引用的域对象,使用final关键字修饰。
  8. 不允许重写的方法,使用final关键字修饰。
  9. 不允许运行过程中重新赋值的局部变量。
  10. 不允许外部直接通过new来创建对象,那么构造方法必须限制为private。
  11. 工具类不允许有public或default构造方法。
  12. 类非static成员变量并且与子类共享,必须限制为protected。
  13. 仅在本类中使用的变量,必须限制为private。
  14. 仅在本类中使用的方法,必须限制为private。
  15. 类成员方法仅对继承类公开的,必须限制为protected。

集合处理

  1. 不要在foreach循环中进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁。
  2. 使用entrySet遍历集合K/V,而不是用keySet方式遍历。

并发处理

  1. 获取单例对象需要保证线程安全,其中的方法也要保证线程安全。
    注释规约

  2. 所有枚举字段必须加注释说明数据字段的用途。

其他

  1. 获取当前毫秒数用System.currentTimeMillis()而不是用new Date().getTime();

二、异常日志

异常处理

  1. finally块必须对资源对象、流对象进行关闭操作。如果有异常也要做try-catch操作。
    日志规约

  2. 日志文件推荐至少保存15天,因为有些异常具备以周为周期发生的特点。

三、单元测试

1、编写测试代码应遵守BCDE原则,以保证被测试模块的交付质量。
B:Border,边界值测试,包括循环边界、特殊取值、特殊时间点、数据顺序等。
C:Correct,正确地输入,并得到预期的结果。
D:Design,与设计文档相结合,来编写单元测试。
E:Error,强制错误信息输入(如非法数据、异常流程、非业务允许输入等),并得到预期的结果。

四、安全规约

  1. 隶属于用户个人的页面或者功能必须进行权限控制校验。
  2. 用户敏感数据禁止直接展示,必须对展示数据进行脱敏。
  3. 用户输入的SQL参数严格使用参数绑定或者METADATA字段值限定,防止SQL注入,禁止字符串拼接SQL访问数据库。
  4. 用户请求传入的任何参数必须做有效性验证。
  5. 禁止向HTML页面输出未经安全过滤或未正确转义的用户数据。

五、MySQL数据库

建表规约

  1. varchar是可变长字符串,不预先分配存储空间,长度不要超过5000个字符,如果存储长度大于此值,则应定义字段类型为text,独立出来一张表,用主键来对应,避免影响其他字段的索引效率。
  2. 表必备三个字段:id、gmt_create、gmt_modified。
  3. 表的命名最好加上“业务名称_表的作用"。
  4. 库名与应用名称尽量一致。
  5. 当单表行数超过500万行或者单表容量超过2GB时,才推荐进行分库分表。
    索引规约
  6. 超过3个表禁止join。需要join的字段,数据类型必须绝对一致;当多表关联查询时,保证被关联的字段需要有索引。
  7. 页面搜索严禁左模糊或者全模糊,如果需要请通过搜索引擎来解决。
    SQL语句
  8. 禁止使用存储过程,存储过程难以调试和扩展,更没有移植性。
  9. 不得使用外键与级联,一切外键概念必须在应用层解决。
  10. 在代码中写分页查询逻辑时,若count为0应直接返回,避免执行后面的分页语句。

谢谢阅读。

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/89515347

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。