干货贴 | 改善代码可读性的5种方法

本文最初发布于 byrayray.dev 网站,经原作者授权由 InfoQ 中文站翻译并分享。

在本文中,我会列举五条提高代码可读性的原则。这些原则是我在各种项目、团队和组织的实践中总结出来的经验。我希望大家可以从这篇文章中学到一些东西,从而提高代码的可读性。

太长不看版

总有人不喜欢从头到尾看完全文,而是想赶快看完重点,这里为此准备了太长不看版:

  1. 重用会多次使用的内容。

  2. 避免针对可读性和可维护性制定一个通行的解决方案。

  3. 尽可能减小模块、类或组件的大小。

  4. 为你的代码自动化执行一些规则和准则。

  5. 就算你的团队只有你一个人,也要像是在多人团队中一样编写便于协作的代码。

1. 重用会多次使用的内容

大多数开发人员都知道 D.R.Y. 是什么意思(避免重复代码)。D.R.Y. 可以帮助你预防代码重复的问题。

为什么一个函数要写一遍又一遍呢?你应该只编写一次,然后在需要它的各个位置重复使用它。而且如果你需要更改它的代码,就只需要改动一处位置就可以了,用不着把修改好错误的版本复制粘贴到各个地方。

但请注意,D.R.Y. 原则会让你引入复杂性。因为到最后,事物被重用的次数会越来越多。

当你开始更改被多次重用的代码时,针对这部分代码编写测试的重要性就会充分体现出来了。

2. 避免针对可读性和可维护性制定通行的解决方案

可重用性、可读性和可维护性彼此之间既是朋友也是敌人。当你开始在自己的代码中践行 D.R.Y. 原则,你就会引入复杂性。当你引入复杂性时,可读性水平可能就会下降了。

因此,在构建功能时不要想着先做一个通行的解决方案。从简单入手是最好的!第一次尝试肯定没法做到尽善尽美。

通过多次迭代,你就可以在重用应用程序很多部分的同时,仍然保持不错的可读性和可维护性。

当你在拥有许多开发团队的组织中工作时,你的团队可能会分为内部人员和外部人员(例如自由职业者或顾问)。因此在这种情况下,人们会经常在不同组织之间来回切换。

在这些场景中,可读性和可维护性是成功的关键。让那些很可能随时离开团队的人员来制定通行的解决方案,并不是一个明智的选择。

在某些情况下,你的确需要通行方案,但这些方案必须做到很容易阅读和维护。

3. 尽可能减小模块、类或组件的大小

在为一款应用程序构建一些新功能时,你可能会在构建前作详细的规划。

最佳的解决方案肯定是能拆分成许多较小的模块、类或组件的。你想知道为什么吗?

因为小段代码更容易测试和维护。

想象一下,人们在现实中搭建高层建筑时,也是从一个个较小的单元开始拼装而成的,而不是一下子就把整幢大楼都造好,然后设法安装到地基上。当然了,例外也是有的。

大多数现代库和框架都分成了一些较小的构造块,而不是打包成单个文件。像 Angular、React 和 Vue 这样的 JavaScript 库和框架都采用了组件的概念。我认为他们的选择并不是无意识的结果。

4. 为你的代码自动化执行一些规则和准则

想要编写出可读和可维护的代码,一方面要关注的是代码的架构,另一方面则要关注代码的样式。

我想很多读者都经常会见到关于制表符或空格缩进的讨论。不过这里我不会讨论这个话题。无论你在团队中使用的是哪种方案,请确保所有团队成员都遵守它就行了。

最好的解决方案是,尽可能让这些代码样式规则和准则自动化。许多 IDE 都集成了这种功能,或者可以通过插件安装。

最简单的一种,也是支持多种语言和代码编辑器的方案是 editorconfig。只要添加一个.editorconfig,就可以应用这些规则。

你可以在这些文件中为你的项目调整许多设置。你也可以指定全局设置方案,或者为特定的语言指定设置。例如:

  • 缩进样式:制表符或空格

  • 引号类型:单引号或双引号

  • 最大长度

  • 字符集

  • 还有更多……

  • 下面是我在自己的一个项目中指定的配置:

    # Editor configuration, see https://editorconfig.orgroot = true[*]charset = utf-8indent_style = spaceindent_size = 2insert_final_newline = truetrim_trailing_whitespace = true[*.ts]quote_type = single[*.md]max_line_length = offtrim_trailing_whitespace = false

    网络上还有许多适用于某些特定语言的工具。对于 JavaScript 来说,我喜欢使用 Prettier,但你可能希望换一些不一样的工具。

    不管怎样,只要参与项目的所有人都遵循相同的规则和准则,那么具体使用哪一种方案并不重要。

    5. 就算只有你一个人,也要像在多人团队中一样编写代码

    最后一点也是非常重要的,那就是永远都像在团队中一样编写便于协作的代码!

    我可以想象,从未在团队中编写过代码的开发人员是很难理解这一条原则的。

    可是如果你在一个人编写项目,就会很容易写出来很多只有你自己才能理解的代码(例如编写模糊不清的变量名、使用 2-3 个字符的变量名等等)。

    应该试着像在团队中一样编写能方便他人理解的代码。想象一下,这就是说你的代码应该足够清晰明了,让其他人可以轻松理解。

    你可以问一问朋友,或者在开发者社区中通过 Twitter 找什么人过来帮你检查代码的可读性,这是很简单的测试方法。我可以保证,你会得到自己意想不到的反馈。

    不要担心负面反馈!你只要关注那些可以让你的代码对其他人更具可读性的反馈意见就行了。

    你应该知道,可读代码与读起来略吃力的代码之间并没有很清晰的界限,不同人会在这个问题上有不同的看法。如果有人告诉你你的代码很难读,那也不要难过!你应该感谢对方的反馈意见。

    小结

    感谢大家的阅读!希望你从本文中起码能学到一点东西。如果你对提高代码可读性的方法有任何补充,请随时在评论中分享你的想法。

    原文链接

    Five Rules to Improve Code Readability

    https://byrayray.dev/posts/2020-11-17-five-rules-to-improve-code-readability

(0)

相关推荐

  • 如何提高代码质量

    说起代码质量,脑子里会冒出很多词,命名规范.格式规范.日志规范.单元测试覆盖率... 但我觉得,代码质量总结起来就两个:好看和好用. 好看是指代码可读性好,容易理解.容易维护,别人接手了不骂你:好用则 ...

  • 送你一份 DAX 格式指南

    为什么要进行格式化? DAX 是一种函数式语言,正如我们已经学习的或者看到的,DAX 代码中总有一些函数带有几个参数,而参数还可以是其他函数所构成,参数的数量以及嵌套的层数决定了 DAX 代码的复杂度 ...

  • 如何评判代码质量

    代码质量的评价有很强的主观性. 从哪些维度评判代码质量的好坏 代码质量的评价有很强的主观性,描述代码质量的词汇也有很多,比如可读性.可维护性.灵活.优雅.简洁等,这些词汇是从不同的维度去评价代码质量的 ...

  • 如何使用Python开发串口通讯上位机(完结)

    2021的第一份更新,比以往时候来得早一点! 前面两期讲了如何使用pyserial和做好了基本的上位机界面以及与API的联动,今天我们接着完善下代码. 1 编码规范的使用 前面两期只是做基础展示用,所 ...

  • 要提高软件可维护性,需在各个阶段下功夫

    提到软件的可维护性,首先让人想到软件代码的可读性.代码的可读性越好,软件的可维护性越好. 可是,软件的可维护性不仅仅与代码的可读性有关.如果需求定义不清晰,没有详细的设计文档,测试也不充分,软件的可维 ...

  • 淘宝重磅开源代码质量检测工具!

    来源:github.com/ice-lab/iceworks/tree/master/ 好的代码一定是整洁的,并且能够帮助阅读的人快速理解和定位.好的代码可以加快应用的开发迭代速度,不必花过多的时间来 ...

  • 裸奔,还是上操作系统?两者有啥区别?

    写在前面 刚开始学 51 .STM32单片机,自然还是要从裸机开始跑.但是,随着写的裸机软件越来越多,裸机所暴露的问题也越来越多.那么,裸奔和操作系统到底有什么区别呢? 裸奔的局限性 1.并发性:程序 ...

  • 好代码实践:基于 Redis 的轻量级分布式均衡消费队列

    一 我对好代码的看法 1 什么是好代码 如果你读过<设计模式之美>,你可能会觉得玩转各种设计模式,符合设计模式的6大基本原则的代码就是好代码:如果读过<clean code>, ...

  • 改善卫生间隔断耐久性的10种方法

    我们在这里为您提供10种提高卫生间隔断隔板耐用性的方法作为指导.希望这可以帮助. 1.轻轻安装 尽管大多数厕所隔板的材料,如紧凑型抗倍特板,PVC面板,实心塑料,都具有高密度和坚固性的特点,但建议不要 ...

  • 干货 | 超细粉体表面包覆处理的14种方法

    超细粉体通常是指粒径在微米级或纳米级的粒子.和大块常规材料相比具有更大比表面积.表面活性及更高的表面能,因而表现出优异的光.热.电.磁.催化等性能.超细粉体作为一种功能材料近些年得到人们的广泛研究,并 ...

  • 干货 | 求最值常用的24种方法(附例题)!

    写在最后: 最近微信官方改变了公众号推送规则,不是按更新时间顺序排了. 点个"在看",只要你想看,我们都在. 来源:本相关素材来源于网络,如有侵权,请联系后台删除.

  • 【干货】活性污泥法处理工艺12种方法分析

    活性污泥法.生物膜法.厌氧处理法.生物脱氮.除磷等工艺技术,是废水生物处理借助环境工程和化学工程的手段和方法,以微生物作用为主体开发出了种种用于控制和治理水污染治理的新方法. 所谓"好氧&q ...

  • 干货满满 | 求函数值域的14种方法大盘点 详编细解(美编版word)

    数学第六感 中学数学"百科全书式"小帮手,海量优质资料尽在其中,名师学霸聚集处,能够有效丰富师生日常教学与学习:同时,以独特的视角带你领略数学之美,激发学习兴趣. 公众号 好文推荐 ...

  • 干货 | 高浓缩的摄影构图精华,两种方法,一个原则!

    干货 | 高浓缩的摄影构图精华,两种方法,一个原则!

  • 干货丨面料后整理的20种方法

    面料后整理是面料出厂前的最后工序,也是必不可少的重要流程.近几年来,面料后整理技术不断从其他技术领域引进借鉴各种新技术(如低温等离子体处理.生物工程.超声波技术.电子束辐射处理.喷墨印花技术.微胶囊技 ...

  • 干货丨等差数列求和公式有七种方法,还有一些特殊性质!

    等差数列是常见数列的一种,可以用AP表示. 如果一个数列从第二项起,每一项与它的前一项的差等于同一个常数,这个数列就叫做等差数列. 而这个常数叫做等差数列的公差,公差常用字母d表示. 等差数列求和公式 ...