0527泰山版java开发手册

单元测试

  1.好的单元测试必须遵守AIR原则(自动化,独立性,可重复)

  2.单元测试应该是全自动执行的,并且非交互式的.测试用例通常是被定期执行的,执行过程必须完全自动化才有意义.输出结果需要人工检查的测试不是一个好的单元测试,单元测试中不准使用System.out来进行人肉验证,必须使用assert来验证  

  3.保持单元测试的独立性,为了保证单元测试稳定可靠且便于维护,单元测试用例之间绝不能互相调用,也不能依赖执行的先后次序

  4.单元测试是可以重复执行的,不能受到外界环境的影响

  5.对于单元测试,要保证测试粒度足够小,有助于精确定位问题,单侧粒度至多是类级别,一般是方法级别

  6. 核心业务,核心应用,核心模块的增量代码确保单元测试通过

  7.单元测试代码必须写在如下工程目录:src/test/java 不允许写在业务代码目录下

  8.单元测试的基本目标:语句覆盖率达到70%,核心模块的语句覆盖率和分支覆盖率都要达到100%

  9.对于数据库相关的查询,更新,删除等操作,不能假设数据库里的数据是存在的,或者直接操作数据库把数据插入进去,请使用程序插入或者导入数据的方式来准备数据

  10.和数据库相关的单元测试,可以设定自动回滚机制,不给数据库造成脏数据,或者对单元测试产生的数据有明确的前后缀标识

扫描二维码关注公众号,回复: 11275575 查看本文章

  11.为了更方便的进行单元测试,业务代码应避免以下情况:

1)构造方法中做的事情过多

2)存在过多的全局变量和静态方法

3)存在过多的外部依赖

4)存在过多的条件语句

安全规约

  1.隶属于用户个人的页面或者功能必须进行权限控制校验

  2.用户敏感数据禁止直接展示,必须对展示数据进行脱敏(例如手机号)

  3.用户输入的SQL参数严格使用参数绑定或者METADATA字段值限定,防止SQL注入,禁止字符串拼接SQL访问数据库

  4.用户请求传入的任何参数必须做有效性验证

  5.禁止向HTML页面输出未经安全过滤或未正确转义的用户数据

  6.表单,AJAX提交必须执行CSRF安全验证

  7.URL外部重定向传入的目标地址必须执行白名单过滤

  8.在使用平台资源,譬如短信,邮件,电话,下单,支付,必须实现正确的防重放的机制,如数量限制,疲劳度控制,验证码校验,避免被滥刷而导致资损(比如验证码不加频率限制,就可以用来对某人进行骚扰)

  9.发帖,评论,发送即时消息等用户生成内容场景必须实现防刷,文本内容违禁词过滤等风控策略

MySQL数据库

一.建表规约

  1.表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是unsigned tinyint(1表示是,0表示否)

  2.表名,字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字.数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑

  3.表名不使用复数名词

  4.禁用保留字(保留字列表:https://blog.csdn.net/qq_32828933/article/details/83247198)

  5.主键索引名为pk_字段名;唯一索引为uk_字段名;普通索引名则为idx_字段名

  6.小数类型为decimal,禁止float和double

  7.如果存储的字符串长度几乎相等,使用char定长字符串类型

  8.varchar是可变长字符串,不预先分配存储空间,长度不要超过5000,如果存储长度大于此值,定义字段类型为text,独立出来一张表,用主键来对应,避免影响其他字段索引效率

  9.表必备三字段:id,gmt_create,gmt_modified

id为主键,自增1,类型为bigint_unsigned

gmt_creat,gmt_modified的类型均为datetime类型,前者现在时表示主动式创建,后者过去分词表示被动式更新

  10.表的命名最好遵循"业务名称_表的作用"

  11.库名与应用名称尽量一致

  12.如果修改字段含义或对字段表示的状态追加时,需要及时更新字段注释

二.索引规约

  1.业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引

  2.超过三个表禁止join,需要join的字段,数据类型保持绝对一致;多表关联查询时,保证被关联的字段需要有索引

  3.在varchar字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度

  4.页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决

  5.如果有order by的场景,请注意利用索引的有序性.

  6.利用覆盖索引来进行查询操作,避免回表

  7.利用延迟关联或者子查询优化超多分页场景

  8.SQL性能优化的目标:至少要达到range级别,要求是ref级别,如果可以是consts级别最好

consts 但表中最多只有一个匹配行(主键或唯一索引),在优化阶段即可读取到数据

ref 指的是使用普通的索引

range 对索引进行范围检索

  9.建组合索引的时候,区分度最高的在最左边

  10.防止因字段类型不同造成的隐式转换,导致索引失效

  

猜你喜欢

转载自www.cnblogs.com/aLin002/p/12970324.html