• 后端代码评审(Code Review)


    代码审查(Code Review)是软件开发中常用的手段,和QA测试相比,它更容易发现和架构以及时序相关等较难发现的问题,还可以帮助团队成员提高编程技能,统一编程风格等。

    一.审查原因(Why)

    持续、有效的开展代码走查,将会收获许多收益,具体表现在:

    1. 能及时发现代码中的Bug,保证版本质量。

    2. 提升代码的可读性、可维护性,建立团队共同的编码风格。

    3. 有利于知识共享,打破技能壁垒,避免单点故障。

    4. 通过展示自己的优秀代码和设计思路,提升了个人成就感。

    5. 通过讲解自己的代码,对个人沟通能力也是一种提升。

    6. 提高开发者的对编码的责任感。

    二.审查对象内容(What)

    前后端所有研发人员审查周期内提交的代码及数据库脚本

    如代码数量过多可挑选部分重要功能模块进行

    三.审查人员(Who)

    代码走查不只是开发人员的事情!需要多种角色同时参与,因为走查活动不仅仅要看功能是否实现了,还要看代码和设计是否一致?测试用例是否完备和有效?

    1. 主持人(老王)

    负责主持整个走查活动,控制时间和进度。

    2. 讲解人(被审查研发人员)

    负责对走查的代码进行讲解。

    3. 评审人(其他研发人员,测试,UI)

    负责对走查代码提出问题,建议。

    四.审查地点(Where)

    会议室

    五.周期计划(When

    一周一次,时间每周四下午17:30

    六.审查规范方法(How)

    6.1编码习惯:(关注点-框架使用与基本功)

    1. 没有被使用的变量要删除。

    2. 针对不同的 Exception 要用不同的 catch 语句,而不是一个 Exception 解决所有问题。

    3. 针对变量,方法和类要用相同的命名方法。

    4. 常量应该被写在独立的常量类中。

    5. 每行代码的尾部不要有多余的空格。在什么地方放置空格和断行符?使用制表符还是空格?大括号如何放置?

    6. 对于括号,循环,if语句等等要用统一的格式。

    7. 每一个单独的方法不应该超过100行。

    8. 一个单独的语句不应该超过编辑器的可视区域,它可以被拆分成几行。

    9. 检查 String 对象既不是null也不是空的最好方法是 if(“”.equals(str))

    10. 假如类有很多成员变量,并且实例化的时候只需要少数变量传入的话,最好使用静态工厂方法,而不是重载构造函数。

    11. 给方法添加适当的访问控制,而不是所有都是 public。

    12. 遵守项目中使用的框架的最佳实践建议,例如 Spring,Struts,Hibernate,jQuery。

    13. 域、常量、变量、参数、类的名称是否符合标准?命名是否太短?

    6.2业务实现:(关注点-设计思路与业务逻辑)

    1. 如果类似的逻辑被使用了多次,应该把它写成一个帮助类,然后在多出调用。

    2. 鼓励使用 API 而不是重复编写代码解决相同的问题。

    3. 要强调代码的单元测试。

    4. 任何新加的代码不应该破坏已有的代码。

    6.3安全(关注点-系统安全性sql注入等

    1. 任何代码都不能执行用户的输入,除非转义过了。这个常常包含 JavaScript 的 eval 函数和 SQL 语句。

    2. 禁止那些在短时间内提交非常多请求的 IP。

    3. 任何类,变量,还有方法都应该有正确的访问域。

    6.4性能(关注点-系统运行消耗和可扩展性

    1. 所有数据库和文件操句柄在不需要的时候都应该被关闭。

    2. SQL 语句的写法会导致性能千差万别。

    3. 鼓励创建不可变(immutable)的类。

    4. 类似的逻辑代码,尽量通过 if else 语句来实现更多的重用。

    5. 尽量避免使用重对象(heavy objects)。

    6. 如果是 Web 项目,请检查是否使用了合适的图片尺寸,CSS sprites 和浏览器缓存等技术。

    7. 全局都需要的信息保存在 application context 中。

    8.检查代码是否包含无效代码、多余变量、可复用方法、不必要的开销

    9.操作码,异常码是否符合统一要求规范

    6.5注释:关注点-代码可读性注释清晰完善

    1.在有处理逻辑的代码中,源程序有效注释量必须在20%以上。

    2.文件注释:文件注释写入文件头部。

    3.类和接口的注释:该注释放在class定义之前,using或package关键字之后。

    4.类和接口的注释内容:类的注释主要是一句话功能简述、功能详细描述,说明:可根据需要列出:版本号、生成日期、作者、内容、功能、与其它类的关系等。

    5.类属性、公有和保护方法注释:写在类属性、公有和保护方法上面。用//来注释,需要对齐被注释代码。

    6.注释的内容要清楚、明了,含义准确,防止注释二义性。说明:错误的注释不但无益反而有害

    7.对于方法内部用throw语句抛出的异常,必须在方法的注释中标明,对于所调用的其他方法所抛出的异常,选择主要的在注释中说明。对于非RuntimeException ,即throws子句声明会抛出的异常,必须在方法的注释中标明。

    6.6新技术:关注点-适用性和扩展学习

    1.代码使用新技术是否有效,是否最优,一起讨论学习

    推荐阅读  

    【远程医疗】互联网医院 卫健委数据上报平台技术方案
    【技术选型】你的公司,你的项目真的适合微服务吗?
    【划划重点】论大数据中主数据的重要性
    【视频问诊】ffmpeg+HLS直播与回放技术
    【远程医疗】智能导诊技术方案

  • 相关阅读:
    dubbo里面的JavaBeanDescriptor是怎么进行序列化和反序列化的?
    为什么dubbo的调用重试不建议设置成超过1
    dubbo中registry、route、directory、cluster、loadbalance、route的关系以及一个引用操作和调用操作到底干了啥
    技术博客-1 DRF框架下的图片(文件)上传
    Scrum meeting 1
    beta设计和计划
    事后分析$alpha$
    项目展示$alpha$
    帮助文档
    发布声明α
  • 原文地址:https://www.cnblogs.com/Javame/p/13260977.html
Copyright © 2020-2023  润新知