代码规范

2019-11-14  本文已影响0人  sxplus

最近组里来了新人,从别的项目组转过来,也算不上是新人了,但是在代码习惯上有很多问题,写出来的代码问题也多。

虽然说写代码个人有个人的习惯,但是一个逻辑清晰简洁的代码,总是让人更易阅读,也更少的问题。
好的代码,一般有一些通用的标准
比如圈复杂度,可读性,良好的注释,语义明确的方法/字段名

在我们的项目中,也有一些常用的规范,是每一个新人进来都会被宣导的

  1. 较低的圈复杂度
    一般来说,更低的圈复杂度,可阅读性更高。
    我们倡导扁平化的逻辑,尽量减少圈复杂度,让分支更少,更易于阅读和维护
  2. 代码行数
    降低每个类的代码行数,降低每个方法的代码行数
    能一行实现的代码就不要用两行来实现
  3. 代码注释
    方法以及关键步骤一定要有注释
    不仅要注释是做什么还要注释为什么
  4. 避免过度封装,明确返回类型
    service方法一定有明确返回类型,避免用过度封装的公共类
    在多系统合作的情况下,这种情况尤为重要,过度封装的结果就是每一个消费方都要询问生产方返回的数据结构
  5. web层作用
    web层不光是服务的转发,还可以做一些基础的入参校验,返回的统一封装
  6. 私有方法
    非对外提供服务的方法要定义成私有方法
  7. 语义明确
    定义变量和方法名时,应该语义明确,一个更新的方法不能叫query**
  8. 事务
    不需要事务的地方不要加上事务,比如定时任务,一个定时任务可能处理很长时间,在最外层加上事务会让表一直处于tx lock状态,影响其他业务
  9. 减少copy
    不必要的时候尽量减少copy property, 利用反射copy也会影响性能, 还要考虑深浅copy的问题
  10. 日志
    日志不要打印太多,影响运行效率, 有时还会导致问题比如忘记判空
  11. sql效率
    sql效率是个很大话题,比如我们要注意
    避免在索引字段使用函数/计算操作/使用空值
    like左模糊会让索引失效可使用reverse代替
    可以使用union all的地方不要使用union
    非必要避免使用耗费资源的操作比如DISTINCT,UNION,MINUS,INTERSECT,ORDER BY
  12. 异步任务
    不要在web层新起线程调用service启动异步任务,超时会让service主线程终端
  13. 关闭流
    使用完io流,必须手动关闭,因为gc无法释放虚拟机之外的系统资源
  14. 异常
    无需处理的异常不要catch, 业务问题直接抛出业务异常
  15. 缓存
    高频使用的数据可以考虑缓存,更新较少的数据性能要求较高的地方使用缓存
  16. 分页
    数据可能很大的情况一定要用分页查询
  17. 递归
    有递归调用的地方,一定要注意退出条件,避免造成死循环
  18. 批处理
    可以批量更新/插入的尽量批量处理,避免频繁连接数据库
  19. 设计
    写代码前要做好设计,让逻辑及可能的简介清晰
  20. 测试
    一定要做有效的单元测试

通常如果能遵循这些规范来开发,一般代码的问题都不会很大了,如果有问题也是较高级的问题,值得去研究排查

上一篇下一篇

猜你喜欢

热点阅读