[译]编写高可读代码的十个实践

译者:baiyutangphp

做者:Jason McCrearyhtml

我已经写了20年的代码,曾经和17个团队用不一样的编程语言建立了上百个项目。这些项目包括几乎全部的软件类型,从我的博客,到支撑3000个请求/秒的接口,再到顶级的销售App
从这些经历中,结合我看过的书,我愈来愈清晰的认识到编程中最重要的事:可读性(readability)。
表面上看,可读性多是主观的,有时又受到编程语言、代码库和团队的影响。可是当你深刻观察,在代码中的的一些核心元素让他们更具备可读性。
不少的编程者只关心机器,只要代码可以运行,别的都不重要了。然而一种广泛的辩解认为,这会把咱们作的事中全部的人为因素都消灭掉了。
最近的几个月,我致力于提取这些因素,总结了10个实践,目的是编写可以提升代码可读性和下降复杂度的代码。我已经详细的写出来并配上实例代码在BaseCode.
可是不幸的是,不少反驳者认为这些太基础、微不足道。可是我向你保证,我遇到的每个坏代码都没有运用这些实践,而且每一个好的代码都有一个实践例子,若是不是不少的话 git

格式化 Formatting

不少精力浪费在格式化了,缩进符号使用制表符仍是空格,函数或代码结构体开启的花括号是紧跟其后仍是另起一行?你会意识到格式化并非重要的事情。接受一个格式化标准,应用到代码库,并设置自动格式化。而后你才能把精力从新放在真正写代码上。 程序员

无用代码 Dead code

全部的注释块、没有使用的变量和从没有真正执行的代码都是会腐烂的。他们实际上告诉阅读代码的人:我不关心这些代码。因此就开始腐烂了。随着时间过去,这些无用的代码将会杀死你的代码库,这就是经典的《破窗理论》此理论认为环境中的不良现象若是被听任存在,会诱令人们仿效,甚至变本加厉。
你必须找到并毁掉无用代码,虽然这不须要成为你的优先考虑点,可是你要始终是一名童子军github

嵌套代码 Nested code

image.png

配图为译者选自网络
几乎全部的代码都是业务逻辑,咱们编写代码去判断、迭代和计算。这些常常致使循环或分支有着很是深的代码块嵌套。虽然这可能比较容易被计算机顺序执行,可是这样作可能会让人阅读起来费劲,这些代码愈加复杂和不可读。能够经过“ 卫语句”、尽早返回,或函数式编程方面来解决多层嵌套代码的问题。

使用对象 Using objects

尽管当下是面向对象编程的时代,咱们仍是有基本类型偏执咱们发现这种偏执体如今过长的参数列表、数据团、自定义的数组(字典)结构,这些均可以重构为对象。这么作,不只可让数据结构更正式,还为那些包含原始数据的重复逻辑提供了一个可被追踪的“根”或变量来源。 express

大代码块 Big Blocks

代码能够超过一个临界线,我并不执着于一个死板的数字。当你肯定你有一个大的代码块的时候,这是你识别、重组和重构代码的机会。这个简单的过程让你肯定上下文和对代码的抽象水平,继而你能够正确区分职责,并把代码重构成更加可读和简易化的代码快。 编程

命名 Naming

毫无疑问,命名很难。但只由于咱们让他变困难。在编程中,有一些颇有效的小建议,包括延迟命名。不要由于命名这件事而卡住进度,就继续写代码吧。若是你必须命名一个变量一个句子,仍旧继续写代码。我保证在你完成特性代码或工做时,一个更好的名字必定会本身出现。 数组

删除注释 Removing Comments

这个实践对我来讲是原始规则改变者,这也是让我开始关注代码可读性的缘由。尽管我努力解释,可是仍然只有少一我的由于这个而讨厌我。他们有举了一个例子来讲明注释是彻底有必要的。诚然,当哈勃望远镜遥测系统必须经过返回687与传统适配器链接以获取未知读数时,可能须要与注释进行沟通。可是对于其余一切,你应该挑战你本身重写代码直到代码不须要特别的注释说明网络

合理返回 Reasonable Returns

咱们返回了很奇怪的值,特别是边界条件,好比 -1, 687null 。继而,又写了好多代码来处理这些奇怪的值。实际上,null 的创造称其为 10亿美圆的错误,你应该致力于返回一个更合理的值。理想状况下,即使是消极不期待的方向,也能让调用代码继续执行。若是有真正特殊的状况,用用好的方式来传达,而不是用null数据结构

"三" 规则 Rule of Three

想象一下,有一系列数字,我向你提供了数字 2 并问:下一个是什么?多是3 或 4,也多是1 或2.1,实际上,你也不知道。而后,我提供了另外一个数字:2, 4并问:下一个是什么?多是6或8或16。此次,尽管咱们增长了一些信心,可是咱们仍是不肯定。如今我提供了另外一个数字:2, 4, 16并问:下一个是什么?如今有三个数字,咱们程序员的大脑会看到是平方并肯定下一个数字是256,这就是3规则。
这个例子演示了“若是不能引导咱们正确的思路,咱们不该该预先肯定抽象和设计”。“三”规则用延迟来打消了咱们和重复斗争的想法,直到咱们有更多的数据能够作出正确的决定。用Sandi Metz的话说,“重复比错误的抽象便宜得多。

对称 Symmetry

如今是最后一个,一个能给任意代码像诗同样的可读性的实践:对称。这是引用自 Kent Beck 的《Implementation Patterns

Symmetry in code is where the same idea is expressed the same way everywhere it appears.

代码中的对称性是在任何出现的地方都能用相同的方式表达相同的想法。

这提及来容易作起来难啊,对称更体现出了编写创造性的一面。他是其余事件的基础:命名、结构、对象、模式。他还可能因开发语言、代码库、和团队不一样而异。所以,你能够在平常事件来达到这个目标。而后,一旦你开始把对称性应用到你的代码里,一个简约纯粹的形式就会出现而且代码会很快成型。

DnTrL7PX4AAsB-C.jpeg

原文

jasonmccreary.me/articles/pr…

扩展阅读

相关文章
相关标签/搜索