美文网首页
代码规范

代码规范

作者: sxplus | 来源:发表于2019-11-14 20:46 被阅读0次

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

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

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

    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. 测试
      一定要做有效的单元测试

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

    相关文章

      网友评论

          本文标题:代码规范

          本文链接:https://www.haomeiwen.com/subject/tsldictx.html