全文共2931字,预计学习时长6分
图片来源:unsplash.com Philip Berndt
抽象是邪恶的,代码是反邪恶的,而整洁代码可能是神圣的。
罗伯特·马丁的观点将这一点阐释得非常完美:“唯一有效的代码质量标准是what-the-f**ks/minute。”
每当审查代码时,大脑就会产生三种截然不同的情绪。
•what-the-f**k(恶心)—不需要此代码。
•what-the-f**k(钦佩)—这家伙很聪明
•what-the-f**k(恼怒中)—无法理解这种胡言乱语
那么,当看到代码时,第一件影响我们的事情是什么?
整洁代码。
尽管经常谈论“编写代码”,但我们对待它的方式不同于撰写文章或故事。事实上,写代码就像遵循海明威的原则写故事。
“任何东西的初稿都是狗屎”。
任何文章的初稿都不应发表。对读者来说,初稿粗制滥造、语无伦次;对作者来说,出版初稿十分尴尬。同样,任何开发人员的初步想法都不清楚,编写的代码可能在思想和语法上是混乱的,毕竟它只是初稿。
然而,开发人员肆无忌惮地逃避这一罪行,因为源代码基本上是隐藏的,几个月没有人读取代码,直到代码崩溃。然后最终会有人费力地通过“垃圾代码”解读其中含义。随着更多这样的“不良实例”发生,代码最终会变成一场难以维持的噩梦。
这就是投资于整洁代码的重要性所在。
编写整洁代码就像在建筑物的地基上投入时间、金钱和精力以使其坚固。当暴风雨来临时,这座建筑将依然屹立,而那些未把地基放在优先位置的建筑物将会倒塌。
而整洁代码几乎总是在几个月内收回成本(取决于你的业务或解决方案的规模)。明确表达其目的而没有意外的代码更容易理解,并且可能没有错误。
编写整洁代码是必要的思维方式。编写整洁且结构化的代码需要练习。随着时间的推移,你将学会编写整洁代码。但是你首先需要具备编写的思维方式。培养审查和修改代码的习惯以确保它尽可能是最整洁的。
下面是如何掌握编写整洁代码的技巧。
肯德里克·拉马尔一针见血指出,“如果要讲一个真实的故事,我就从我的名字开始讲起。
软件中到处都有名字。我们命名函数、类、参数、包等等,命名源文件和目录以及其中所有内容。我们不断地命名、命名和命名,因此名字成为我们清洁代码引擎中最重要的内容。
命名应该揭示意图。选择好名字需要花费时间,但比遇到麻烦后,需要花费的时间少多了。因此,多花些功夫在命名上,找到更好的名字时,对其进行更改。所有阅读你代码的人都会对你感激不尽。
永远记住,任何变量、函数或类的命名都应该回答三大问题:为什么存在、它做什么以及它使用了什么。
这不仅需要良好的描述能力,而且需要有超越国界的文化背景,没人能比你自己更好地教你这一点。
函数应该只做一件事。
路易斯·沙利文曾经完美表述道,
“形式遵循函数。”
每个系统都是由特定领域的语言构建而成的,程序员设计这种语言恰当地描述它。函数是该语言的动词,类是名词。函数通常是任何编程语言中组织的第一行,编写好它们是编写好代码的本质。
编写整洁函数只有两条黄金法则:
• 短小精悍
• 只做一件事,并且出色完成。
所以这意味着你的函数不应该足够大以容纳嵌套结构。因此,函数的缩进级别不应大于1或2。这项技术使阅读、理解和消化更容易。除此之外,我们还需要确保函数中的语句都处于相同的抽象级别。
函数中的混合抽象级别会让人迷惑不解,并在适当的时候导致无法管理代码。大师级的程序员认为函数是要讲的故事,而不是要写的代码。
他们使用所选择的编程语言工具构建一个更丰富、更具表现力和更整洁的编码块,以此作为一个完美的故事叙述者。
有用的注释不能弥补错误的代码。
维纳斯·威廉姆斯这番话鞭辟入里,“一千个人眼中就有一千个哈姆雷特,而谣言就是这样开始的。”
注释就像一把双刃剑。没有什么比恰当的注释更有帮助的了,但同时也没有什么比无聊的、无用的、浪费空间的注释更能把事情搞得一团糟了。没有什么比散布虚假信息和谎言的言论更具破坏性。
所以简而言之,注释就是一种必要的邪恶。为什么?尽管不总是如此,但大多数时候的确如此。
注释越陈旧,维护它们就越困难,而且大多数程序员都因为不按照代码维护而臭名昭著。代码是移动和发展的。代码块到处移动;注释不会移动,这就成了问题!
请记住,清晰而有表达力且注释少的代码远远好过杂乱而复杂有很多注释的代码。与其浪费时间解释你造成的混乱,还不如花时间来清理混乱。
应把格式化代码放在第一位。
罗伯特·C·马丁说得没错。代码格式是关于通信的,通信是专业开发人员的首要业务。
不能低估上述陈述,这是一个伟大的开发人员最重要的特性之一。
格式化的代码是打开思想的一扇窗。我们希望给人们留下井然有序、注重细节和思维清晰的深刻印象。但是当他们看代码时,如果看到一堆杂乱无章的代码,没有任何明确的开始或结束,那么毫无疑问,我们的声誉马上扫地!
如果你认为“让它工作”是专业开发人员的首要任务,那么就大错特错了。今天创建的功能很有可能在下一个版本中被更改,但是代码的可读性永远不会改变。
在原始代码完全转换为无法识别的代码后,编码风格和可读性会继续影响代码的可维护性。
永远记住,你将因为自己的风格和规则而非代码被记住。因此,你需要保证代码格式良好,并且由所有团队成员能够理解的简单规则进行控制。
首先写下你的“Try-Catch-Finally”语句。
乔治·坎古伊尔姆所言非常正确,“人皆会犯错,但坚持错误是恶魔。”
处理错误是所有程序员都会做的事情。输入可能异常,设备也可能发生故障。作为开发人员,我们需要确保代码按照预期的方式工作。但是,问题不是处理错误;问题是以清晰可读的方式处理错误。
许多代码产生于处理控制错误期间。事情变得如此分散,以至于完全抹杀了主要代码的目和逻辑。发生这种情况是错误的,完全错误的。代码应该干净、稳固,并以优雅的方式处理错误。这是成为一名可以创造伟大软件的程序员的标志。
其中一种方法是通过适当的附件和捕获try-catch块中的所有错误来实现。这些块在某种程度上定义了代码的范围。在try catch finallystatement的try部分执行代码时,声明可以在任何时间点中止执行,然后在catch处继续执行。
因此,在编写代码时,最好从try-catch finally语句开始,这有助于定义代码的用户可以期望什么。无论在尝试中执行的代码有什么问题,始终记住,你制造的每个异常情况都应该包含足够的上下文确定错误的来源和位置。
在编写代码和程序员离开组织很久后,创造性的信息性错误信息会被记住。
最后的想法
据罗伯特·马丁所说,“编写整洁代码需要有规则地使用无数小技巧,这些技巧通过千辛万苦习得的“整洁感”来应用。”这些小技巧统称为代码感。”
我们中的一些人天生就拥有它,另一些人则不得不通过实践、坚持和毅力煞费苦心才能获得。这种代码意义不仅有助于区分好代码和坏代码,而且有助于我们形成将坏代码转换为好代码的策略。
这种代码旨在帮助程序员选择最佳的变体和可用的最佳工具来指导他或她努力创建一个增值的干净、漂亮的代码。
简而言之,一个有代码感的程序员是一个画家,他可以把一个空白的屏幕变成一件高雅的艺术作品,被人们铭记多年。
哈罗德·亚伯森总结的甚是:“程序必须是人们为阅读而编写的,顺便让机器执行而已。”
留言 点赞 关注
我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”
(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)
转载:https://blog.csdn.net/duxinshuxiaobian/article/details/101761319