【译】做好这几件事,代码质量可以提升一个档次

这篇文章又是关于代码质量的,有些同学可能觉得我比较啰嗦。不过我就是想用这种方式让大家重视起来。其实说来说去就那么几种方法,但是实际执行起来真是难于登天。

低质量的代码真的是一种灾难。当你的代码变得越来越混乱,维护起来就会花费大量的时间。在最坏的情况下,代码将变得不可维护,并且项目会慢慢终止。

为了避免这种情况,你需要注意你的代码质量。尝试在代码质量上花费一些时间,长久来看,这将对你有很大的好处。

无论你是管理者,测试人员或者是开发者都应该去自觉维护代码质量,因为在整个开发流程中,大家的目标都是交付可用的、高质量的代码。

要想提高代码质量,需要做到以下六件事,其中一些是一个人可以完成的,而有些则必须要团队配合。

1. 四眼原则

四眼原则是易于理解和执行的。它的意思是必须要有至少两个人(包括作者)检查过代码,目前最流行的方法是Pull request。

Pull request是让你告诉别人你已经在GitHub上向分支push了一些代码改动。在开启Pull request之后,你就可以和协作者讨论潜在的问题,并且可以在你的代码被merge之前继续对它进行修改。

——Github.com

在代码审查期间,有几件事需要考虑。其中之一是检查代码是否违反了约定的代码规则。这一过程可以通过在管道中使用linter来实现自动化,但有时也需要手动执行。

另外一个需要检查的是代码的可维护性和错误处理。这件事还没办法自动化。最后,需要检查的是代码的完整性。这一修改是否完成了需要完成的全部功能?

2. 持续集成

“开发环境是好的。”这是某些开发人员常说的,还有就是:“在我电脑上没问题”。

如果希望避免这种问题的争论。持续集成可以给你提供很大的帮助。

持续集成是一种软件开发实践,团队的开发人员经常集成他们的工作,通常每人至少每天集成一次——这使得每天需要集成很多次。每次集成都应该由自动构建(包括测试)尽快确认是否存在集成错误。

—— Martin Fowler

持续集成的意义在于,它可以快速的向开发者提供结果反馈。

持续集成的两个基本作用是:

  1. 保持快速构建,没什么比一次耗时一小时的构建更让人沮丧的了。
  2. 快速修复损坏的构建。持续集成会让你始终在一个稳定的版本的基础上进行开发。

持续集成通过快速向开发者提供反馈来帮助提高代码质量。如果测试不通过,那么构建就会失败,此时开发者就会注意到。此外,最好在构建脚本中添加linter来检查是否符合编码规范。毫无疑问,这也是用于提高代码质量的。

3. 编码规范

拥有一系列的代码规约是非常重要的。但是在你开始制定代码规约之前,团队的每个人都应该参与。因为这期间可能存在大量的关于最优约定的讨论。

编码规范中应该包括怎样声明和命名一个变量等等。规则的数量是没有限制的,并且以后可以继续调整,前提是这些规则对你和你的团队有帮助。

当编码规范制定好以后,请务必遵守。就像我前面提到的,最好的检查办法是在管道中增加linter,这样就不需要人工干预了。如果不这样做,也可以选择在本地安装linter。但要保证在每次提交之前规范使用linter。这样你的团队的代码风格将非常统一,有利于提升代码的可读性和可维护性。

高质量的代码可以加快软件开发的速度,因为它可以被复用,并且开发人员不必花费大量时间修改bug和完善代码。同时新人加入项目也会更快适应。

4. 测试,测试,测试

代码质量越高,bug就越少。我们通常通过测试过滤出严重的bug,确保代码按照预期执行。

制定清晰的测试策略对于提高代码质量至关重要。至少要保证你的代码可以通过单元测试。如果你以其他方式进行测试就更好了,例如集成测试或回归测试。

根据测试金字塔,项目中数量最多的测试应该是单元测试,因为它们既简单又快速。有很多工具可以帮助你创建单元测试并生成代码覆盖率报告。

跑单元测试和生成代码覆盖率报告可以通过持续集成自动进行。当代码覆盖率达不到要求时,持续集成也会构建失败。

5. 分析bug

代码中有bug是必然的事情,如何处理这些bug才是关键。如果你想要提升自己,学会从错误中学习至关重要。这也是为什么你要分析bug。

发现bug后,先分析bug的影响。是一个低优先级的还是高优先级的?如果是高优先级的,就需要尽快解决。

分析bug时,你需要问自己一些问题。是什么导致了错误?为什么没有测出来?其他地方也有可能发生吗?以及我们应该怎样避免类似的bug产生?

当然,我们也要学会使用工具追踪bug。目前市面上有许多可用的bug追踪工具,你可以根据需要选择适合自己的工具。

6. 开始量化

在开始量化时,可以用几个指标来衡量代码的质量。

缺陷指标

缺陷的数量和缺陷的严重程度是衡量代码质量的重要指标。如果你想追踪bug,可以使用bug燃尽图。bug燃尽图和软件敏捷开发中的正常燃尽图一样。唯一不同的是bug燃尽图包含未修复的bug,而不是事故点。

复杂度指标

复杂度通常由圈复杂度衡量,它是程序的源代码线性独立路径数量的一个衡量。

圈复杂度数和缺陷频率之间存在一定的相关性:

许多研究调查了函数或方法中圈复杂度数和缺陷频率数之间的相关性。有些研究发现了圈复杂度和缺陷数的正相关性:函数和方法越复杂,缺陷也就会越多。然而,圈复杂度和程序大小之间的相关性已被多次证明。

从理论上来讲,降低代码的复杂度会使缺陷更少。

原文地址

https://medium.com/better-programming/things-that-you-can-do-to-improve-code-quality-c746c30e7521

原文地址:https://www.cnblogs.com/Jackeyzhe/p/11768273.html

时间: 2024-08-04 12:26:31

【译】做好这几件事,代码质量可以提升一个档次的相关文章

真正优秀的领导者,无非是做好这2件事

导读:对员工来说,最好的领导是最为开放和诚恳的,他的威权和魅力不建立在隐藏的信息和故作高深上,而是愿意倾听员工的想法,明智的筛选出对大家.对公司最有利的决策,并且释放出员工的潜能. 过去30年间,在众多不同类型机构的工作经历,让我见证了对领导和领导力的各种定义.在此过程中我发现,无论是大型企业还是中小企业,从高盛.福特汽车.缅甸红十字会到中国的央企,遇到的挑战是大同小异的.总结起来,就是两大挑战: (一)如何让员工最大化参与: (二)让更多下属.员工具有企业家的眼光和手段. 01 最大化员工参与

一个好产品,只是帮用户做好了一件事

你需要流程引擎.逻辑引擎或者管理工具,BPM平台贯穿业务流程管理生命周期的每个阶段: 不管你是IT人员.业务人员还是开发人员,都能找到最适合自己使用的设计工具: 你需要一个企业门户,你需要移动办公,你需要单点登录功能,或者ESB服务总线…… 构建和运行一切与流程相关的应用, 这就是K2在做的事情,也是唯一的事情. K2网站新改版, 为您呈现更丰富详实的产品介绍. 好产品自己会说话, 欢迎试用. http://www.k2software.cn/

城市选择控件(逼格瞬间高了一个档次,绝非标题党。)

首先,这款地址控件,是某网的,怎么来的,你懂得(费了很大的劲,也费了很多的时间,就这么爱折腾.)来先看几张图. 献给我即将离开的公司,感谢有你!也献给我们的博友们. 1.热门城市 2.省份 3.城市 4.区县 5.翻页 6.字母匹配 7.最终 8.看完这几张图片,是不是很眼熟.然后这些并没有什么卵用.如果觉得可以请推荐一下. 没上过榜.靠你们了.本人Net非科班,勿喷.我就是个打游击的. 顺便说下:哪位博友有好的交流QQ群请推荐一下,我的QQ:5164012,请拉我一把.(验证消息:博客园).

代码质量是优秀程序员的底线,你居然说不重要?

最近dash iOS 开源,infoQ推送了一篇翻译: 从Dash iOS开源说起,不要过于追求完美代码 .我读完的心情就是干死他,一本正经的胡说八道.每段都是先提出一个正确的概念,然后就展开表达混入害人的概念,这种写作手法让人不齿. 追求代码质量是一个优秀程序员对自己的要求 许多程序员文化是建立在完美代码的理想上:代码不仅能够运行,而且也必须是干净.优雅的.我们以巧妙地构建解决难题的对策为傲.然而这种完美主义可能不利于团队的成功,因为完美主义常常导致个人分歧. 我想任何一门工艺.手艺,从业者想

前端代码质量-圈复杂度原理和实践

写程序时时刻记着,这个将来要维护你写的程序的人是一个有严重倾向,并且知道你住在哪里的精神变态者. 导读你们是否也有过下面的想法? 重构一个项目还不如新开发一个项目...这代码是谁写的,我真想...你们的项目中是否也存在下面的问题? 单个项目也越来越庞大,团队成员代码风格不一致,无法对整体的代码质量做全面的掌控没有一个准确的标准去衡量代码结构复杂的程度,无法量化一个项目的代码质量重构代码后无法立即量化重构后代码质量是否提升针对上面的问题,本文的主角 圈复杂度 重磅登场,本文将从圈复杂度原理出发,介

关于代码质量的一些思考

关于代码质量的一些思考 今天刚好看到同事写一段代码,跟同事聊到一个代码风格的问题,讨论了一会,也没得出什么结果.回来想了想,之所以大家观点不一样,其实是一开始代码追求的目的就不一样. 1. 可读性 我是一直认为代码的可读性是最重要的目标.太多的书都讲到一个观点:"代码是写给人阅读的,只不过刚好能被计算机执行". 大部分做自己产品的团队,一个项目的维护时间可能是开发时间的5倍以上,而维护的常见内容都是一些小功能以及已有bug的修复.可读性带来的好处就是,非常容易弄清一段功能逻辑,从而定位

当开发者产生一个伟大的想法之后应该做的10件事

当你正和家人享受一个悠闲的午后,一个不错的想法突然出现在你的脑海里.不管它是一个 App 还是服务,或是一个新的概念.只要你把这个想法付诸实践,它就可能会成为下一个 uber,甚至会改变世界. 那接下来你应该怎么做呢?这里有一个指南,会告诉你在决定把自己这个想法实现之后应该做的事情. 1. 起一个名字 在你决定开始之后,要做的第一件事就是为你的产品起一个名字,这个名字是有多重要大家心里都很清楚,如果你并不擅长起名字,你可以通过一些工具来扩展你的思路,如 visual thesaurus, Wer

Findbug在项目中的运用--提高代码质量

 FindBugs是一个静态分析工具,它检查类或者 JAR文件,将字节码与一组缺陷模式进行对比以发现可能的问题.有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析 第一 手动安装 在Eclipse点击菜单中Help-->菜单 第二:输入地址: http://findbugs.cs.umd.edu/eclipse,出现版本列表: 按照一步步提示安装重启即可 =================================================== 2) (Re-)star

《设计模式之美》 <02>评判代码质量好坏的维度

如何评价代码质量的高低? 实际上,咱们平时嘴中常说的“好”和“烂”,是对代码质量的一种描述.“好”笼统地表示代码质量高,“烂”笼统地表示代码质量低.对于代码质量的描述,除了“好”“烂”这样比较简单粗暴的描述方式之外,我们也经常会听到很多其他的描述方式.这些描述方法语义更丰富.更专业.更细化.我搜集整理了一下,罗列在了下面.这些几乎涵盖我们所能听到的描述代码质量的所有常用词汇,你可以看一看. 灵活性(flexibility).可扩展性(extensibility).可维护性(maintainabi