开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情
文章中有翻译不准确,词不达意的地方还请各位指正~,thanks。
一开始将 Clean Code 翻译为简洁代码,总觉得不是很好,一时没想到整洁这个词,直到后来发现了《代码整洁之道》这本书。。。
原文地址:The Top 10 Tips to Write Clean Code
译者:xingba
校对者:xingba
介绍
著名的软件专家 Robert C. Martin 在他的 代码整洁之道 一书中写到,
编写整洁代码是自称为专业人员必须做的,没有任何理由不做到最好。
编程毫无疑问是繁琐的,特别是在人工智能、智能计算、自动化测试的时代。程序员不仅要学习语言算法,还要尝试编写复杂的工作软件。编写整洁的代码类似于下厨和摄影这样的活动——看起来容易,做起来难。但编程仍然很重要因为它带来的好处非常广的。
好的软件的一个重要的特点是代码整洁。开发者更愿意处理代码容易理解和修改的应用。有时候,编写代码是为了赶上截止时间,结果却因为越来越多的 bug 需要修复导致最终还是延迟了。有研究表明,阅读代码的时间相比编写代码超过了 10:1 。所以编写整洁代码就更加有必要了。
什么是整洁的代码
下面是整洁代码的一些特征:
- 具有可读性
- 优雅
- 容易理解并且遵循单一职责原则(SRP)
- 容易阅读、修改、维护。
- 根据每个测试案例运行测试
Brady Brooch 在他的《面向对象的分析和设计与应用程序》一书中将整洁的代码定义为:
简单、直接。整洁的代码阅读起来就像优美的散文。整洁的代码不会让设计者的意图难以理解,相反是清晰的抽象和直接的控制线。
编写整洁代码的重要性
编写整洁的代码有几个好处,其中就包括下面的:
- 解决问题变得容易
整洁的代码彻底改变了解决问题的方法。软件设计和算法变得更加有意和优雅,反对强制性和约束性的解决方案。
- 清晰的想法交流
整洁的代码也能减少一个团队中一起工作的程序员的争端和误解。从而减少 bug.
- 更少的维护
整洁的代码是容易被阅读和理解的,从而减少解析各个功能块的时间,更多的时间花在更新、迭代和扩展上。
最佳实践
谈论了代码整洁的定义和重要性后,接下来是 10 条最佳方式实现代码整洁。
使用语义化名字
功能的名字和变量尽可能的语义化。比如,要特指字符和姓氏,变量名 developer 和 lastNameDeveloper 都可以被使用而不是只使用名字。如果只使用 n 是非常不好的,因为会很难理解这个标识上的变量组成部分。
功能的名字应该始终以动词开始。比如,一个返回开发者名字的模块,可以使用 getDeveloperName 而不是叫做 name。
用空行使代码更具可读性
以下是使用空行带来的好处:
- 让代码更加清晰
- 额外的一行也能轻松的标识功能的结束位置
- 将操作的功能和变量的声明区分开
- 在返回的值之前空行能帮助理解操作
不要给函数传入超过3个参数
在一个功能里面使用一组参数将会很难发现它们在哪里被使用,而只使用三个参数并遵循它们的逻辑会更加方便,让代码看起来更加合理。
如果需要使用三个以上的参数,最好是传入一个对象并在功能里面使用对应的键。
一个函数只做一件事情
如果开发者想要解决一个问题,应该避免在一个功能中执行多个任务,一个模块必须只做一件事情。编写一个复杂的方法不如编写两个或者更多的短函数。
函数必须简短
如果需要一个复杂的函数,使用类是更加可靠的。一个方法必须只做一件事情,就像之前提到的,必须简短。
减少一行中字符的数量
避免使用冗长的代码使其容易阅读。一行代码必须相对于屏幕是合适的这样就不会出现水平滚动条。像 Prettier 这样的许多工具允许开发者控制自己的代码风格。
使用注释
使用注释有利于维护代码。虽然有些语义化的功能名和变量名能避免使用注释,但并不推荐这样做。注释让代码清晰连贯。
提交代码时使用语义化信息
语义化信息也可以被使用在代码提交中。在未来对理解代码中的功能时能派上用场。在语句中也应该要提供充分的信息描述。
对开发者来说,只写重构之类的信息是不够合乎逻辑的。像 从CRM获取客户信息 这种语句是合适的。
使用单元测试并且实践测试驱动开发的思想
在开发中编写单元测试是很重要的一步。能让代码整洁,灵活,可维护。让修改代码和减少 bug 变得简单。测试驱动开发在软件开发中是一个过程,在这个过程中需求被转化为特定的测试案例,然后进行软件改进以通过新的测试。根据 Robert C. Martin 的说法,TDD 的三个规则如下:
- 生产代码应该使失败的单元测试通过
- 单元测试不应该编写到足够失败,编译失败就是失败
- 只应编写足以通过一个失败的单元测试的生产代码
学习设计模式
设计模式是一个很广泛的领域,提供了比如,那些有丰富经验的著名的开发者在软件中处理公共问题时总结下来的解决方法。
总结
编写整洁的代码是一项需要广泛实践的技能。