提高代码质量_5条提高代码质量的技巧

本文介绍了提高代码质量的五个关键技巧:1. 使用代码检查工具,如linter,遵循语言或框架标准并集成到CI流程中。2. 注释代码要恰到好处,包括文件、类和函数级别的注释,避免过多的行内注释。3. 编写清晰的代码,使用恰当的命名,保持代码简洁,遵循语言标准。4. 强调测试,采用测试驱动开发,自动化测试,确保覆盖不同的测试层次。5. 进行代码审查,利用团队合作,提问讨论,以提高代码可读性和可维护性。
摘要由CSDN通过智能技术生成

提高代码质量

您是否曾经思考过您的代码,并想知道是否可以做得更好? 我在这里告诉您可以编写高质量的代码,我也可以向您展示如何执行。

在开始之前,我想定义我所说的“高质量代码”的确切含义。 当我想到高质量的代码时,我想到的代码是:

  • 您可以阅读一次并了解
  • 几乎没有错误
  • 遵循所用语言的标准
  • 做您期望的事情,并有成功的证明

现在我们知道了目标是什么,我们需要学习如何编写简洁的代码。 但是如何做到这一点? 在Simple Programmer帖子How to Write Clean Code中 ,John建议阅读两本书: Code CompleteClean Code 。 我强烈鼓励您听取他的建议。 但是,我知道您很忙,您可能没有时间阅读这两本书。 让我通过分享我在该领域多年所学到的有关生产高质量代码的最重要的知识,为您分解一下。

多年来,我很高兴从事许多项目。 我将是第一个承认他们并没有总是表现出最出色的人,但是他们总是帮助我学习如何变得更好。 今天,我对自己编写高质量代码的能力充满信心。 事不宜迟,以下是我编写的提示和技巧列表,这些提示和技巧有助于我真正提高自己的代码质量。

1.使用棉短绒

使用代码查询器可以解决很多问题。 对于不熟悉linter的任何人,如果您的代码不符合某种语言的规范和标准,则代码linter会读取您的代码并输出错误和警告。 这些警告在当时可能看起来微不足道,但是,就像您家中的皮棉一样,它们会随着时间的推移而累积。 为了充分利用短绒棉,我建议采取以下技巧:

实施语言或框架标准

我强烈建议在代码上运行一个linter,以针对所使用的语言或框架实施最广泛接受的标准集。例如,如果您正在编写Python,则建议您使用pylint软件包,该软件包将强制执行PEP-8中定义的规则。 如果您正在编写Angular应用程序,则建议使用遵循Angular样式指南的linter配置。

将您的Linter与CI集成

除非您定期使用,否则linter确实根本不会为您提供帮助,并且根据我的经验,除非被迫开发,否则开发人员通常不会这样做。 只需几分钟即可学习如何正确使用短绒,那么为什么这么多开发人员却忽略了呢? 我认为这是因为作为开发人员,我们对代码常常过于自信,我们讨厌在开发过程中增加其他步骤。

因此,我建议您使用诸如Atlassian's Bamboo,Jenkins或Travis CI之类的服务来建立持续集成构建管道。 在构建管道中,您应该将棉绒作为第一步。 这样,如果您的代码没有通过lint测试,就不会构建,测试或发布。

使用lint就是为了使您尽可能地编写糟糕的代码。

2.注释您的代码“足够”

在注释代码方面,通常有两种类型的开发人员:注释所有内容的类型和不注释任何内容的类型。 事实是,双方都有利弊。 一方面,在代码中保留太多注释只会使其变得更混乱且更难以阅读。 另一方面,没有任何评论可能会使未来的开发人员陷入动荡。

秘密在于,当评论提供价值时,您应该添加评论。 对我个人而言,我发现以下技巧对于编写好的,有意义的评论很有价值:

文件顶部评论

我发现在文件顶部写一个2–3行的注释对您的目标和其中的代码范围进行简要概述很有帮助。 我不必花超过10秒钟的时间查看文件即可知道其主要焦点。

但是,我不建议遵循将文件名,电子邮件地址,日期,文件名,许可证等置于“文件顶部”注释中的标准。 所有这些信息都应该在其他位置可用,并且只会使您的文件混乱。

班级评论

对于离开班级的评论,我有同样的感觉。 我认为在每节课的顶部留下简短的注释,以解释该课的主要目标和范围是很有用的。

但是,如果您的类名是“ CarObject”,请不要发表评论“代表汽车的对象”。 留下有意义的评论或什么都不要留下。 如果是我,我会说更多类似的话:“代表汽车,并包含其零件的引用。 通常由X用来做Y。”

功能级注释

函数要确定向其添加注释的价值有些棘手。 一方面,我相信具有复杂逻辑的长函数应该带有注释,如果这样做只是为了节省我阅读代码以了解其功能所需的时间。 另一方面,我不认为简单的获取/设置逻辑需要注释。 例如,如果我有一个名为“ x”的类级别变量,则不会注释名为“ get_x()”的函数。 这会产生混乱,没有价值。

但是,如果我有一个名为“ calculate_xyz()”的100行函数,我会在该函数的顶部留下注释,以使开发人员确切地知道该函数的功能。 这意味着要描述输入,执行的逻辑和输出。 至少,此注释使开发人员不必阅读函数中的代码即可知道其功能。 阅读2至3行以获得基本的理解与阅读100条以上的行可能会有所不同,以进行更深入但通常不必要的理解(尤其是当开发人员仅关注功能的输入/输出时)。

行注释

我尝试在代码中尽可能少地使用注释。 如果代码是如此复杂,以致于在阅读了文件,类,函数注释以及代码本身之后,您仍然不了解它,则可能需要对其进行重构。 要点是:尽力编写无需重新阅读即可理解的代码。 如果您的代码可以被阅读一次并能被理解,那么您将不需要注释使您的代码变得混乱,并且您的同事将欣赏它的全面性和简洁性。

3.编写清晰的代码

编写高质量代码的最重要部分之一就是编写清晰的代码。 编写一些代码后,请稍作休息,但要花很长时间才能将其清除(可能需要数小时,数天或数周的时间)。 当您返回到代码时,如果您一次通读都无法理解代码,则应以某种方式,形状或形式对其进行重构。

以下技巧帮助我编写了更清晰的代码。 这些似乎对他们没有多大帮助,但是使您的代码尽可能清晰易懂,对于将来必须维护的人而言,可能会有所不同。

使用格式正确的名称

使用命名良好的函数,类和变量。 名称应告诉您有关事物如何使用及其代表的微观故事。 它不应该是单个字母,例如“ x”,也不应该是一个70个字符长的句子,下划线。

带单位的后缀变量和函数

对于处理单位的变量和函数,请将单位附加到它们的末尾。 例如,如果我有一个名为“ width”的变量,以像素为单位表示元素的宽度,则最好将其命名为“ width_px”。 使用这种命名方案可以确保使用变量的人不能忽略其所在的单位。简单的事情,例如使用其名称使用变量的单位,确实可以帮助减轻生产中的严重错误。

坚持标准

对变量,函数,字符串,注释等使用语言标准。以不同的方式做事并不一定很糟糕,但是它可能使人们失望—尤其是当他们试图记住函数/变量的名称时,就去搜索为此,并努力记住正确的术语。

如果您使用的是Python,请以Title大小写命名您的类,并以蛇形命名您的函数/变量。

在文件中对健康的常见想法进行分组

不要在一个文件中放入太多信息。 我喜欢坚持“每个文件一个类”的规则。 而且,如果我编写的代码不一定使用类,则尝试按功能的核心目标对功能进行分组,并以这种方式将文件分开。

将通用代码良好地分离到单独的文件中,可以帮助开发人员更快地找到他们要查找的代码,并帮助他们更快地在文件中消化正在寻找的信息。 例如,如果我现在只关心X,并且X,Y,Z一起在一个文件中,那么与X在单独的文件中相比,我将更难消化与X有关的信息。

单引号与双引号的使用

这个约定可能会引起争议,因此可以选择保留还是保留它,但是当处理诸如Python和JavaScript之类的松散类型的语言时,我已经很喜欢这个约定。

如果您的语言支持用单引号和双引号表示字符串,请考虑对可能显示给最终用户的字符串使用双引号,而对仅内部字符串使用单引号。 明确标识内部使用的字符串和显示给用户的字符串,使您一目了然地意识到了一段代码的影响,如果您修改其值的话。

4.测试您的代码

在本文的开头,我提到为了使代码具有较高的质量,您应该能够证明其功能正常。 好的,证明就在布丁中,而布丁就是这样:您需要提供足够的测试量,以向局外人证明您的代码可以按预期的方式工作。

我似乎只是一个鼓吹好的软件测试的人–那是因为软件测试对于编写高质量的代码确实非常重要。 您需要测试代码的预期情况,边缘情况和失败情况。 如果可以确定您的代码只能执行您在测试中看到的功能,那么您已经朝着高质量代码迈出了一大步。

以下是一些技巧,可以帮助您最好地利用软件测试来提高代码质量:

测试驱动开发

是的,传说中的TDD。 如果您严格遵守首先编写良好的质量测试的过程,那么它可以为您的代码带来奇迹。 这是出于多种原因。

首先,如果您在编写代码之前就考虑了测试用例,那么您将以清晰的思路开始开发,即将代码需要什么作为输入,将代码产生什么作为输出。 通常,我们不考虑我们的测试用例。 结果,我们对程序的远见卓识不如以前那样。 我发现,如果我不事先考虑测试用例,那么在调用完成之前,我常常不得不重写部分代码,有时要重写几次。

显然,这也迫使您编写测试。 有时,在编写代码后,我们会看一眼,然后说:“那真的很简单; 进行测试将浪费时间。” 如果您首先编写测试,那么以后就不会给自己机会。 如果放弃测试,您将无法真正证明您的代码达到了您的预期目的。 结果,您更有可能在代码中发现错误。

我喜欢这种方法的另一个很好的理由是,如果您预先编写了足够好的测试用例,那么您可以立即知道代码何时从不完整到完成。 此外,一旦您具有良好的测试覆盖范围并且所有测试都通过了,就可以证明我在说您的代码可以按预期的方式工作。

自动化测试

尽可能自动执行测试非常重要,因此您没有借口不执行测试。 编写好的测试是向前迈出的重要一步。 但是要进行真正的自治测试,您应该将测试集成到连续集成或构建管道中,以便在提交代码时自动进行测试。

利用不同的测试层

如果您已经进行了一些测试,那么您的方向正确。 坦率地说,比我过去从事的大多数项目都要领先。 但这还不足以建立一套单元测试。 为了覆盖您的所有基础并证明程序可以遍及所有层,您需要对每个层进行测试。

但是,您必须找到正确的平衡。 通常,您需要最多的单元测试,更少的集成测试以及更少的端到端测试。 这些测试层可以帮助您全面测试应用程序,还可以使将来的维护人员更容易发现代码中可能存在的错误。 开发可维护代码就是开发质量代码。

5.代码审查

代码审查是对他人代码理解程度的最终测试。 尽可能利用它。 让其他人能够在您面前阅读和理解您的代码是对程序是否可维护的最终测试。

此外,在同一个项目上工作了几个月后,我们的判断常常会变得模糊。 为了获得公正的意见,除了您自己以外的其他人有必要查看您的代码。

以下技巧将帮助您利用代码审查:

利用团队代码评论

如果您是团队的一员,那么您将处于利用代码审查的完美位置。 许多团队利用代码审查的一种方式是,他们在完成大量工作之后进行代码审查,但是在开发周期中还没有很快,他们很快就会发布该软件。

如果您等到软件发布之前进行代码审查,将会发生以下情况:您将进行审查,获得大量反馈,将所有优先级降低优先级以按计划发布软件,然后就不用担心了。反馈。

最好在进行代码审查之后将时间计划在时间表中以进行调整。 代码审查完成后,您实际上将在计划中有时间进行必要的更改。 这样,您可以确保发布质量最高的软件,按时发布软件,并确保其他人可以更好地理解它。

“好友系统”

如果您自己工作,可能会发现执行代码审查更加困难,甚至几乎不可能。 但是,如果找到“伙伴”,您仍然可以进行代码审查。 考虑与您的同事,承包商或您的一个开发人员朋友进行安排,您同意在预定的时间检查彼此的代码。

如果您使用伙伴系统,则在独立工作时仍可以获得代码审查的好处。 只要确保安排公平即可。 同意等量地查看彼此的代码,并尝试使代码审查的时间保持相同的时间。 如果您可以使交易公平,那么它可能会持续更长的时间。

不要争论,讨论

在进行代码审查时,不要过分批评某人,这一点很重要。 您希望对话与代码有关,而不是与编写代码的人有关。 不要争论各种意见。 但是,代码应推动讨论。

如果您是审查代码的人,请提出以下问题:为什么这样做? 您为什么使用此库? 此功能有什么作用? 这些类型的问题有助于推动讨论。 相反,如果您开始大声疾呼诸如“我会以这种方式做到这一点”或简单地说“此代码是错误的”之类的事情,那么您可能就不会有那么多的评论了。

做笔记

做笔记是代码审查和最富有成果的会议中最重要的部分。 不要仅仅依靠审阅者标记您的代码。 记录在审查会议中发生的讨论。 即使就某个特定的代码块实际上是好的达成共识,也要记录下来。 您可以稍后再阅读该说明,然后再次改变主意。 尝试在审核期间捕获尽可能多的有价值的信息。 然后,思考一下笔记并确定需要优先处理的事项。

总而言之,我建议强调以下努力来帮助您提高代码质量。

  • 显影时使用短绒。 更好的是,将一个linter集成到您的构建管道中。
  • 写出有意义的评论。 不要用注释使代码混乱,但是请确保在必要时有好的注释。
  • 编写清晰的代码。 确保以前从未见过的人可以阅读和理解您的代码。
  • 强调软件测试。 从一开始就开始测试您的软件,不要退缩。
  • 进行规范审查 。 不要将好的评论变成争论。 提问,讨论并做笔记。

这绝不是提高代码质量的所有方法的完整列表。 但是,这些都是为了提高代码质量而采取的所有重要步骤。

我认为在开始做这些事情之前,我没有写过不好的代码。 但是这些帮助我将其带入了一个新的高度。 当我回顾我的旧项目并将它们与当前项目进行比较时,我可以看到这种改进。 不管您从哪里开始,我希望这些技巧可以帮助您看到相同的改进。

翻译自: https://www.javacodegeeks.com/2017/10/5-tips-increase-code-quality.html

提高代码质量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值