经验丰富的程序员和一般程序员之间的最大区别,不仅体现在解决问题的能力上,
还体现在日常代码的风格上。掌握一门技术可能需要几月,甚至几周就够了。
好的习惯风格养成却需数年。 团队成员之间需要合作,代码需要日后可维护,个体的能力和习惯存在差异。
故保证代码质量及风格,就需要制定一定的规则,按项目周期(最好是在上预发之前)组织进行集体代码review。

一 目的

        1    保证代码质量
自己的代码要给别人看,在开发过程中就会刻意的注意一些规范,写法及逻辑严谨性。 2 扼杀潜在的风险
程序员会去自测,即使有某种情况分支遗漏, 在讲解的过程中其他同学也能发现。 3 互相学习提高
高手是如何写出逻辑严谨,简洁易懂的代码的。方便对照自己的不足,逐步的纠正。

二 如何推动

1 分组结对

   1  一般团队大前端,后端 肯定有多名同学。
可以按‘同项目,模块或老司机带新’ 的模式进行分组。并指定各个小组组长(最好轮值)。 2 小组长,负责开发过程中规范提醒 及 发起相互review。

2 集体review

  1  每次review最核心的代码,控制好时间。

   2 各自讲解自己的模块,复杂业务最好配有流程图。

3 开发工期

要把 ‘代码review’及 代码优化也评估进去。

4 打分制(下面会继续 讲解打分细则)

   1  评判代码好坏,还是需要一个衡量标准,可以采用打分制度。除同个项目组成员外其余项目组同学,均要给该讲解人打分。

   2  打分需要注明:一  需要修复和改进的地方; 二  值得学习借鉴的地方。
并统一由会议记录人,邮件抄送相关人员,开发者去落实修改,组长负责跟进验收。

三 自查(测)清单

前面说了,要自测。那么我们大概可以从如下方面切入:

1 常规项

1 代码能够工作么?它有没有实现预期的功能(需求),逻辑是否正确等。
2 所有的代码是否简单易懂? 是否尽可能的模块化了?组件化了?是否存在多余的或是重复的代码?
是否有可以被库函数替代的代码(尽量用集团自有的)? 不重复造轮子。
3 代码符合你所遵循的编程规范么(详见 我另外html,js,css编码规范的文章)?这通常包括大括号的位置,变量命名和函数名,行的长度,缩进,格式和注释。
4 去掉大段被注释掉的代码(若有用可以先提交到git上,以后可回滚)
5 循环是否设置了长度和正确的终止条件? 按钮是否有控制单次点击,不重复提交?
6 是否有考虑调用api接口缓存问题?是否有可以删除的日志或调试代码?
……

2 安全

1 所有的输入是否都进行了检查(检测正确的类型,长度,格式和范围),考虑了xss攻击和js脚本注入。

2 引用导入的第二、三方依赖包,是否存在不可用 和 版本升级导致功能不可用的风险。
是否是GPL协议的源码( 不能用,否则会要求使用者的代码也开源)

3 本机保存的数据,是否有泄漏的隐患。(铭感数据不做本地存储,即使保存也需要加密)。

4 所有的请求链接是否都是用https,包括图片地址。

5 发布之前清理log日志 和 敏感注释。尤其是前端同学。

3 文档

1 是否有注释,并且描述了代码的意图?数据结构和计量单位是否进行了解释?
2 对非常规行为和边界情况处理是否有描述?
3 第三方库的使用和函数是否有文档?
4 是否有未完成的代码?如果是的话,是不是应该移除,或者用合适的标记进行标记比如‘TODO’?

4 性能速度

1 页面加载显示是否超过3s(用户超过3s 就会不耐烦,除非你有很友好的提示。。。)
2 js代码 是否有明显影响性能的逻辑 和 计算。
3 同个组件 或者 页面布局层级嵌套尽量不要太深,保持简洁性。

四 评分标准及规则 (5大维度,总分100)

1 需求功能覆盖率 --------权重3(30%)

9-10分:代码严谨、逻辑分支覆盖全面 无遗漏
6-8分:无关键逻辑分支遗漏,普通遗漏不超过2次
0-5分:关键逻辑分支遗漏1次及以上 或其他分支遗漏2次以上

2 代码结构耦合度--------权重3(30%)

9-10分:结构清晰,模块独立(数据融合),模块间关联简单,模块内完成特定子功能
6-8分:模块间中度藕合(控制藕合)
0-5分:模块间强藕合,模块内功能复杂

3 健壮性---------2(20%)

9-10分:性能稳定,异常考虑周全,没有安全注入风险----1 页面打开速度不超过3s 2 破坏性测试情况下依然稳定加载
6-8分:异常处理不到位(undefined等),存在性能问题,但不影响关键流程,不宕机
0-5分:关键流程存在问题,有宕机风险

4 简洁度------1(10%)

9-10分:没有冗余代码,没有重复造轮子,单个函数功能单一,建议不超过20行,无多余导入的包或类
6-8分:存在冗余,重复代码
0-5分:普遍存在冗余,重复代码

5 可读性------1(10%)

9-10分:严格执行集团编码规约,易于理解,命名规范,注释清晰 
6-8分:存在阅读障碍与阅读困难的情况
0-5分:关键逻辑与复杂代码缺乏注释,理解极度困难

ps: 分数最终计算方式可以这么着
1 总分按100分算,单项最终得分=评分*权重 (例如‘覆盖率项得总分27=9*3) ,然后把5项的总分加起来。

2 3.75的标准就是各项加起来90分+ ;3.5的标准就是加起来80分+

补充:
1 方法的请求 和 数据处理 尽量分离, 抽离 (一个方法只做一件事情)。 2 相关对象,做下 容错 或 默认值 处理。 3 主要review 1 异常情况分析处理 2 主流程业务有无遗漏。

前端代码质量保障之代码review的更多相关文章

  1. 怎样编写高质量的java代码

    代码质量概述     怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍.也请有过代码质量相关经验的朋友 ...

  2. 编写高质量的 Java 代码

    代码质量概述 代码质量所涉及的5个方面,编码标准.代码重复.代码覆盖率.依赖项分析.复杂度分析.这5方面很大程序上决定了一份代码的质量高低. 我们分别来看一下这5方面:编码标准:这个想必都很清楚,每个 ...

  3. 提高Java代码质量的Eclipse插件之Checkstyle的使用详解

    提高Java代码质量的Eclipse插件之Checkstyle的使用详解 CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具.它能够自动化代 ...

  4. 提高Java代码质量的Eclipse插件之Checkstyle的使用具体解释

    CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发者遵守某些编码规范的工具.它可以自己主动化代码规范检查过程.从而使得开发者从这项重要可是枯燥的任务中解脱出来. Ch ...

  5. 怎样编写高质量的 Java 代码

    代码质量概述 怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍.也请有过代码质量相关经验的朋友提出宝贵 ...

  6. 如何保障Go语言基础代码质量?

    为什么要谈这个topic? 实践中,质量保障体系的建设,主要针对两个目标: 一是不断提高目标业务测试覆盖率,保障面向客户的产品质量:二就是尽可能的提高人效,增强迭代效率.而构建全链路质量卡点就是整个体 ...

  7. Web前端开发最佳实践(11):使用更严格的JavaScript编码方式,提高代码质量

    前言 JavaScript语言由于其固有的灵活性,所以导致开发者可以写出很多诡异的代码,甚至一些较为正常的特性,如类型隐式转换.this的指代等等,也会让刚接触此语言的开发者头大不已.尤其是那些熟知其 ...

  8. 团队代码中Bug太多怎么办?怎样稳步提高团队的代码质量

    最近负责的Android APP项目,由于团队成员变动.界面改版导致代码大幅修改等原因,产品发布后屡屡出现BUG导致的程序崩溃. 经过对异常统计和代码走读,BUG主要集中在空指针引起的NullPoin ...

  9. HTML Inspector – 帮助你编写高质量的 HTML 代码

    HTML Inspector 是一款代码质量检测工具,帮助你编写更优秀的 HTML 代码.HTML Inspector 使用 JavaScript 编写,运行在浏览器中,是最好的 HTML 代码检测工 ...

随机推荐

  1. springboot 程序发布到tomcat运行

    springboot 一般使用jar 的方式运行,我们需要将程序放到tomcat环境下运行. 步骤如下: 1.修改pom文件. 排除内置的tomcat <dependency> <g ...

  2. (3)The critical role librarians play in the opioid crisis

    https://www.ted.com/talks/chera_kowalski_the_critical_role_librarians_play_in_the_opioid_crisis 00:1 ...

  3. CHAPITRE III

    Il me fallut longtemps pour comprendre d'où il venait. Le petit prince, qui me posait beaucoup de qu ...

  4. 证明LDU分解的唯一性

    首先上(下)三角矩阵乘以上(下)三角矩阵结果还是上(下)三角矩阵, 另外我们考虑相乘后的对角元素可发现,对角原始是原来2矩阵对应对角元素的乘积. 另外对角线都是1的上(下)三角矩阵必定可以只是用行运算 ...

  5. App测试基本流程详解(汇总整理)

    前言 看过许多大神对APP测试的理解,博主总结了一下我们平时测试APP应该注意的一些测试点并结合大神的理解,总结出这篇文章. 一.测试周期 测试周期一般为两周,根据项目情况以及版本质量可适当缩短或延长 ...

  6. Apache hadoop安装配置

    1.网络中继更改问题 命令:   vi /etc/sysconfig/network-scripts/ifcfg-eth0 需要修改的代码 DEVICE=eth0 HWADDR=00:0C:29:11 ...

  7. Java EE JAR包的说明

    在java ee的开发中,jar文件是工程的基础,下面转载了网上兄弟一篇文章,简单介绍了一下,java ee中常用的jar文件的说明: activation.jar 与javaMail有关的jar包, ...

  8. 整理mianshi

    对象锁和类锁wait sleepAMSactivity启动流程handler消息机制JNI相关 1.looper.prepare()做了啥操作https://www.cnblogs.com/ganch ...

  9. C#-VS程序集

    程序集即代码组,可以是单个文件或多个文件,按一个整体部署,但可指定自身调用其他程序集的版本. 推出原因 为解决dll地狱而推出,也可解决其他问题.dll地狱,a应用使用dll版本1,b应用使用dll版 ...

  10. mapnik渲染原理

    https://bbs.csdn.net/topics/390853826