| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 如何做好Code Review -> 正文阅读 |
|
[人工智能]如何做好Code Review |
时光匆匆流逝~ 今天是工程能力学习的最后一篇笔记了! 首先给坚持努力的自己呱唧呱唧! 然后搬好前排小板凳 学习啦! 本节课为《如何做好Code Review》,内容包括:为什么要做好Code Review、如何做好Code Review、例子:Python代码的Code Review、如何成为一个好的reviewer和公司针对Code Review的措施五个方面。 为什么要做好Code ReviewCode Review是提升代码质量的最好方法强化Code Review是提升代码质量的第一选择。 在代码开发过程中,我们越早发现问题、定位问题,在修复问题时付出的成本越小。 大约有50%以上的bug,都是在做Code Review时发现的。前期做好Code Review,后期将会减少反复修改等不必要的复工。 Code Review能够在团队内传递知识从知识传递的角度看,Code Review是极为重要的。 做好Code Review,能够帮助团队传递知识、沟通交流、互相学习,能够提升学习能力、提升编写代码能力、提升代码质量、提升工作效率、降低项目风险。 另外,基于codebase可以使我们了解项目全局,培养系统的思考方式。 Code Review是辅导怎么写代码的最好方法我们要意识到,做Code Review可以学习到别人的经验,同时也可以向别人传递我们的经验。 如果我们想辅导别人,最好的办法就是让对方先写一段代码,我们对他的代码进行Code Review。在辅导他人的过程中,我们可以快速地发现问题,从而帮助改进。 做好Code Review 可以增加公司对最顶级开发者的吸引力工作中是否有Code Review对于公司或团队来说非常重要。不但对于公司或团队内的人员有所提升,而且能够吸引出色的开发者加入开发团队。 未做好Code Review的公司或团队有如下特点: ①代码质量差。 ②团队内人员备份差。 ③其人得不到有效的辅导,提高慢。 为什要提高代码质量?①提高代码质量可以提高代码的可读性。 ②提高代码质量可以提高代码的复用性和参考性。 ③提高代码质量可以减少bug出现的风险。 ④提高代码质量可以减少后期补丁的风险。 ⑤提高代码质量可以降低代码失控的风险。 ⑥提高代码质量可以降低项目重构和升级的麻烦。 为什么要提高写代码的能力①代码能力如果停滞不前,对于个人而言,将导致职业危机。 ②代码能力如果停滞不前,对于团队而言,将意味着团队没有成长。 Code Review是一个非常重要的提升代码质量和代码能力的手段。无论是从个人发展角度,还是团队发展角度,我们都需要重视Code Review。 如何做好Code Review在Code Review中可能发现的问题→ 拼写错误; → 未优化的代码; → 不必要的复杂代码; → 已经实现过的代码,又重复实现; → 注释不全; → case没有覆盖全等等问题。 在Code Review中要有一个好的态度 要做到以下几点(1)对所有检查的代码逻辑要做到“完全看懂”,对于审核的代码,熟悉程度要做到“如数家珍”。如果在审核代码后,对代码的逻辑和背后的原因仍然很模糊,则是一个失败的Code Review。 (2)好代码的标准,不仅仅是“可以运行通过”,在正确性、可读性、可重用性、可运维性等方面上,都需要综合考虑。 (3)建立Code Review和写代码一样重要的意识。即: ①Code Review和写代码一样,也有产出,即产出更高质量的代码。 ② 审核代码在很多情况下比写代码还要辛苦,需要理解和找出问题等。 (4)以提升代码质量为最终目标。 (5)要投入足够的时间和精力。 ①审核代码花费的时间经常和写代码一样多,有时甚至比写代码的时间更多,要有时间意识。 ②要有责任意识。如果出现bug,不仅仅是写代码人员的职责,也不仅仅是QA的职责,代码审核者也需要承担相当大的责任。 在Code Review之前,一流代码的特性一流代码有以下特性:①高效性;②鲁棒性;③简洁;④简短;⑤可共享;⑥可测试;⑦可移植;⑧可监控;⑨可运维;⑩可扩展。 将以上十条标准进行总结精简,可归纳为: ①代码的正确和性能; ②代码的可读和可维护性; ③代码的可运维和可运行; ④代码的可共享和可重用; 在Code Review时,综合考虑以上一流代码的特性,可以快速提升代码质量、提升编写代码的能力等。 在Code Review时 需要有对bad code 进行简单判断的能力除了要了解一流代码的特性之外,在Code Review时,需要有对bad code 进行简单判断的能力。通常bad code有以下特点: ①5分钟内不能看懂的代码。 不能快速看懂的代码,一定是有问题的代码,可以先抛回给编写代码人员进行修正。一般一个函数的操作不能超过6个step,如果超过这个数量,则需要重新调整编码逻辑。 ②需要思考才能看懂的代码。 好的代码阅读时基本不用动脑子,甚至看注释就能看懂。 ③需要来回翻屏才能看懂的代码。 好的代码,经常在一屏内就是一个完整的逻辑。 ④没有空行或注释的代码。 在Code Review时,发现不会用段落、不会写注释的代码,肯定不是好的程序员写的代码,可以直接打回给编写代码人员进行修正。 Code Review的注意事项①在必要时,review的双方做面对面的沟通。 面对面沟通并不是单指当面沟通,还包括云共享、电话、视频沟通等。在沟通时,对于背景、关键点等应进行说明,便于reviewer的理解。在必要时,应提供设计文档。 ②对于关键模块,应该建立owner制度。 所有提交的代码,必须由owner做最终确认。由owner掌握全局,并建立明确的责任关系。 ③检查中发现的问题,要一追到底。 ④要注意细节。对每一行提交的代码,都要进行检查。 ⑤Code Review的方式,要小步快跑。每次提交review的代码量不要太多,降低复杂度。在特殊情况时,比如一个新模块的构建,最好逐步完成,通过多次进行提交。 ⑥要为Code Review预留出足够的时间。Code Review VS Coding的时间,有时可能达到1:1。在这里需要考虑到有时会做大的修改,科学地规划工作量,尽量避免出现时间倒排。 ⑦注意每天 review代码的数量不宜过多。 Code Review的步骤Code Review的步骤为以下几点: Step1:先看系统全貌 不深究细节,浏览系统全貌,理清模块划分的逻辑、模块间的关系、如何构成的整个系统等。 Step2:进入模块级别 同样不深究细节,浏览模块内的全貌,判断模块切分是否合理,理清模块内的逻辑,明确关键数据、关键的类和函数等。 Step3:理清类、函数内部的逻辑。 Step4:进入细节。 比如Layout、命名等。 人为因素除了代码上的问题,在Code Review过程中还会有一些人为因素,例如: ①QA人员 好的QA人员不仅仅会发现系统中的bug,还会质疑或提出产品需求,挑战或优化系统架构和实现方式。 ②Code Reviewer 好的代码审核人员不仅仅指出代码表面的问题,还会检查系统需求分析的质量、接口或函数定义的合理性、模块划分的合理性、系统关键机制的合理性等。 例子:Python代码的 Code Review以Python为例,从Python的编码规范和Python编程规范的部分说明两个维度来看一下Code Review的细节。这些Code Review细节,在其他语言中基本都是相通的。 Python的编码规范(1)代码要写的漂亮。 (2)代码要明确直接,不要含蓄表达。 (3)代码要简洁,一个函数可以实现的功能就不要写两个函数。 (4)代码深奥胜过代码复杂。代码可以写的深奥难懂,但是不能写的过于复杂。 (5)代码要平铺直叙,不要层层嵌套。 (6)代码要做到合理间隔。 (7)代码可读性非常重要。 (8)代码要有普适性。尽量规避代码特殊性,用最简洁最通用的代码来实现。 (9)代码要实用。 (10)要重视所有发现的错误。 (11)代码逻辑要清晰。在含糊混乱的面前,我们要拒绝猜测。读写代码时,不要出现“好像”、“可能”、“似乎”等猜测。当一段代码很难懂的时候,代码一定存在问题。 (12)写代码要注重行动。 (13)代码实现方法要简洁。如果一个方法很难解释,就意味着这个方法存在一定的问题。 (14)要重视命名空间的使用。 关于Python编程规范的部分说明Python编程规范有九个维度。 (1)模块的划分 我们要对模块有概念,这是整个系统的基础。 ①一个.py文件是一个模块。 ②模块的划分对软件的长期维护非常重要。 ③每个模块都应该有特定的功能。 比如:配置文件的读取,网页文件的写入,网页文件的解析,一个内存数据表,一个抓取的线程等等。 ④多个本应独立的模块,写到一个.py文件中是常见的错误。从Code Review角度看,首先就是要看模块切分的对不对。 ( 2 )数据的封装 在Code Review时,要着重注意数据是否封装这一问题。 ( 3 )import Import在使用过程中,禁止使用from xxx import yyy语法直接导入类或函数。禁止使用from xxx import *这样的方法。这样做的目标是:容易判断代码中使用外部变量或函数的来源。 如果使用禁止中的语法,会大大增加判断来源的难度,以及代码阅读的难度。 在Code Review时,遇到这种情况,及时将代码打回给编程人员进行修正。 ( 4 )异常 对于异常的处理有以下几点需要注意: ①异常的使用 使用异常前请需要详细了解异常的行为。不要主动抛出异常,使用返回值。如果一定要抛异常,需要注释进行说明。 ②异常的获取强制 除非重新抛出异常,否则禁止使用except:捕获所有异常,不建议捕获Exception或StandardError。 在实际编码中建议try中的代码尽可能少,避免catch住未预期的异常,掩藏掉真正的错误。底线是至少要打印异常的日志,而不是捕获后直接pass通过。 在对异常进行处理时尽量针对特定操作的特定异常来捕获。 常犯的错误是:一是对IO等操作不捕获异常。二是捕获异常区域很大。 ③函数的返回值 如果函数会抛出异常,需要在函数的注释中明确说明。 在Code Review时,需要注意上述问题,及时返回给编程人员进行修正。 ( 5 )构造函数 对于构造函数有以下几点需要注意: ①规范: 类构造函数应该尽量简单,不能包含可能失败或过于复杂的操作。 ②解读: 在构造函数中常出现的错误是:无法判断、或捕获异常。 ( 6 )函数返回值 对于函数返回值有以下几点需要注意: ①规范: 函数返回值必须小于等于3个。返回值超过3个时必须通过class/namedtuple/dict等具名形式进行包装。 ②解读: a. 多数情况下的错误,是因为很多人不会思考和设计函数的语义。 函数描述涉及的三要素为:功能描述、传入参数描述和返回值描述。 每个函数都应该有足够明确的语义。基于函数的语义,函数的返回值有三种类型: 第一种类型:在“逻辑判断型”函数中,返回布尔类型的值——True或False,表示“真”或“假”。 第二种类型:在“操作型”函数中,作为一个动作,返回成功或失败的结果——OK或ERROR。 第三种类型:在“获取数据型”函数中,返回一个“数据”,或者返回“无数据/获取数据失败”。 b .另外,函数需要有返回值,对于正确或错误的情况,在返回值中要有体现。 c .还有一个问题是:Python的数据格式不需要定义,过于灵活。当程序规模变大、维护周期变长时,会导致后期极难维护。 应对措施是:多写注释,写清楚返回值说明、参数说明。 在Code Review时,注释未写清楚的代码,一定要打回给编程人员,进行修正、补注释。 ( 7 )代码长度 关于代码长度有以下几点需要注意: ①每行不得超过120个字符。避免在终端上显示出现折行。 ②函数长度不得超过100行。函数过长会增加理解函数逻辑的难度。Python的函数应尽量控制在30~40行之间。 在Code Review时,代码过长,建议全部打回给编程人员进行修正。 ( 8 )空行、空格 关于空行、空格有以下几点需要注意: ①空行 文件及定义之间隔两个空行。比如类或全局函数。类方法之间隔一个空行。 ②空格 逗号、分号、冒号前不加空格,后边加一个空格。所有二元运算符前后各加一个空格。 在Code Review时,需要着重注意空行和空格。空行和空格不是可有可无的。空行和空格的存在,是为了增加可读性。不好读的代码,一律打回给编程人员进行修正。 ( 9 )注释 关于注释有以下几点需要注意: Python中的注释有一个特殊之处是docstring,docstring要和“#”注意区分开。 相关规范有: ①使用docstring描述module、 function 、class和method接口时,docstring必须用三个双引号括起来。 ②对外接口部分必须用docstring描述。内部接口视情况自行决定是否写docstring。 ③接口的docstring描述至少包括功能简介、参数、返回值。如果可能抛出异常,必须使用注释进行说明。 ④每个文件都必须有文件声明,文件声明必须包括以下信息:版权声明、功能和用途简介、修改人及联系方式。 在Code Review时,不符合上述规范的,及时打回给编程人员进行修正。 如何成为一个好的reviewer代码审核的质量,和审核者的代码能力直接相关。代码审核的质量差,反映的是审核者的代码水平。如果作为一个代码审核员不会写代码,就要承认真相,并且要不断提高自己的代码能力。 在这里推荐一些学习资料帮助大家进行学习。 ①关于代码的书籍:《编写可读代码的艺术》,《代码整洁之道》。 ②综合的书籍:《代码大全》,《201 principles of software development》。 ③其他:《代码的艺术》课程,Python Good Coder考试指南。 公司针对Code Review的措施1、建立高校可运营的代码审核机制,提升代码质量,降低代码评审成本。 ①基于平台:icode+bugbye ②代码检查规则分级,分为ERROR、WARNING、ADVICE三类,对ERROR级别阻塞提交。 ③通过统计数据驱动代码检测规则的优化。 2、通过工程能力地图考察项目的Code Review情况。 3、所有的Code Review行为,都基于icode平台进行。良好的工具可以帮助更好的进行代码审核 至此, 我们的工程能力笔记讲解 就圆满结束啦! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 10:33:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |