加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Google和腾讯推广的代码可读性是什么?

发布时间:2022-03-16 14:03:09 所属栏目:大数据 来源:互联网
导读:本文介绍了代码可读性(Readability)的概念和它为什么重要;同时分享了 Google 和腾讯在推广代码可读性方面的做法,供读者在技术管理中参考。 代码可读性是什么 代码可读性(Readability),顾名思义就是代码有多容易被人读懂,我们可以通过代码作者以外的开
       本文介绍了代码可读性(Readability)的概念和它为什么重要;同时分享了 Google 和腾讯在推广代码可读性方面的做法,供读者在技术管理中参考。
 
      代码可读性是什么
 
      代码可读性(Readability),顾名思义就是代码有多容易被人读懂,我们可以通过代码作者以外的开发人员需要多少时间能理解 1 个代码单元(代码单元指 1 个类或 1 个函数),来衡量这个代码单元的可读性。对代码的理解有两个层面:
 
      理解一个代码单元(1 个类或 1 个函数)的作用;
 
      理解一个代码单元的实现逻辑;
 
     如果要使用(调用)1 个代码单元,至少要理解到第 1 层面;如果需要改进或重构,则需要理解到第 2 层面。
 
为什么代码可读性重要
 
代码可读性是团队协作开发的前提;
 
代码可读性是软件可维护性的前提;
 
代码可读性是代码评审的前提,也是代码评审中的核心关注点之一;
 
假设你在开发 1 个业务功能,需要一个图片转换功能(把 DXF 图转换为 SVG 图),你读过系统已有的代码(包括 API 文档),没有发现看起来像这样功能的类或函数,你只好新写一个函数。但实际上已经有同事曾经写过相同功能,函数名叫“toImage()”,这个函数名无法体现其真实功能。
 
这就是一个典型的由于代码可读性低,降低了重用性,导致开发资源浪费的例子。
 
再假设在一个运输系统有一个调度函数,业务逻辑非常复杂而原有代码非常混乱难懂,原来的程序员已经离职。现在老板让你基于某种新场景加 1 种调度策略,并且要求尽快完成,那么你最佳的应对策略可能就是重新写一个调度函数,通过 if-else 语句把新的调度策略引入进来。
 
很显然,这会导致代码逐步腐烂,形成一个“屎山”,最终不可维护。
 
 
即使是在新的软件编码过程中,团队成员之间也不可避免互相调用或在同一个代码单元(类或函数)中共同开发。而这前提都是快速读懂原有代码。
 
因此,在团队开发中,软件可读性影响整个软件编码的协作成本,更影响交付后的软件维护成本。
 
最后,可读性低的代码,几乎无法进行代码评审。代码评审的两大作用:团队知识共享、软件质量把控,都需要基于代码可读性的前提。
 
代码可读性的认证与标准
 
可读性认证
 
Google 和腾讯对于代码可读性(Readability)都非常重视,都有一个认证体系。以腾讯为例,腾讯的代码可读性体系分为:
 
0 级:Foundation,参加了培训并通过了考试;
 
1 级:Wet-hands,参加了 Wet-hands 训练营,并通过了考试;
 
2 级:Workalone,通过项目日常的 CR(代码评审)并积分排队,并通过最终的评定;
 
3 级:Approver,优秀的代码可读性证书持有者,高水平代码的捍卫者 & 布道者。
 
可读性标准
 
评价一个代码的可读性,一般参考以下原则:
 
一致性原则
 
可读性优先于性能
 
SOLID(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)
 
高内聚、低耦合
 
最小作用域
 
DRY(Don't Repeat Yourself)
 
KISS(Keep It Simple, Stupid)
 
YAGNI(You Ain't Gonna Need It)
 
SSH(Shit Stop Here) 我们不会每次代码评审都用到所有原则,但一致性原则(即使错也要错成一个样子)、可读性优先于性能这 2 个原则几乎是需要时刻谨记的。而当我们面对历史代码的时候,我们应该考虑 SSH(Shit Stop Here)原则。
 
基于上述原则,我们在评价一个代码单元的可读性时,会依次看几个方面:
 
设计问题:包括功能性设计(如是否解决了正确的问题、是否正确的解决方案)、整体设计、安全性问题
 
实现问题:包括命名、一致性、代码逻辑、复杂度、作用域、惯用法、错误处理等
 
规范问题:包括 MR 信息、注释、命名、魔法数字等等,这部分一般依据不同语言有所不同。
 
Google 和腾讯是怎么提升代码可读性的
 
答案:代码评审!
 
Google 主要通过代码评审制度来确定代码的可读性,没有任何代码可以不经过代码评审就进入代码库。腾讯某 BG 从 2020 年开始全面推广代码审查制度,并推行代码可读性认证体系。
 
因此,可以说代码可读性的提升取决于代码评审制度的执行。原因很简单,代码评审,就是让第二个人来“读”代码。
 
代码评审的作用:
 
发现代码中的问题或缺陷——其实这是最不重要的一点,毕竟一眼就能看出来的问题,往往不是难以测出来的问题;
 
让开发人员写出更整洁的代码——当你知道有人要读你的代码的时候,你会有压力让代码尽量整洁些易读些;
 
传播知识:
 
1. 对团队成员编码能力的提升有极大帮助。回想一下,上课的时候老师讲完 45 分钟,我们最多只能记住 30%,但通过做作业和老师的批改,我们才能记住大部分的知识点。
 
2. 让重要代码有后备维护人员。很多团队里,一个开发人员负责一个模块,每个人都只关注自己的模块。长此以往,每个人模块都只有 1 个人熟悉和了解,一旦这个同事休假——但愿不是离职,其他人都束手无策了。
 
后 记
 
代码是资产,还是负债?资产:资产是指由企业过去的交易或事项形成的、由企业拥有或者控制的、预期会给企业带来经济利益的资源。负债:是指因为过去的交易或事件,使得未来必须要牺牲的经济利益。衡量一份代码,是资产还是收益,可以通过下面的公式:
 
软件带来的收益 - 软件维护成本 > 0
 
而代码可读性,在降低软件维护成本上,至关重要。

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读