什么是整洁的代码?

什么是整洁的代码?

在软件工程这样一个庞大而多样化的领域中,持续阅读对于构件基础知识和探索分支知识至关重要。与任何行业一样,软件开发有一些必读书籍,而《代码整洁之道》就是其中之一。这本书常年出现在Google的“顶级软件工程书籍”搜索结果中, 并且在工程界广为人知。

这里有一些我从中学习到的知识,与大家分享一下。


对这本书的介绍

image

在很多方面,《代码整洁之道》的结构像是一本代码手册。正如大多数好书一样,是一本非常自以为是的书。

作者马丁在这本书中描述了什么是好的编码以及怎样去重构不好的编码,以告诫那些无法分辨出编码习惯好坏的人。马丁对他的失败持开放态度。多年来阅读糟糕的代码的经历让他有意去帮助其他开发者避免危险。总之,这本书成百上千的建议会使你生产出优质的代码。也就是说,大多数工程师都在努力学习,使他的糟糕的代码变得更好。

但是《代码整洁之道》不仅仅是一个教程。他不仅描述了编写好代码的方式,而且写了为什么要写好代码。不仅仅是事记硬背的规则。我从中读出了一个优秀的程序员的不可侵犯的价值观。下面,我将这概括为三个关键的概念。

1. 我们要有工匠精神

很少会有那种从始到终都不被修改的完美代码(当然,“完美的代码”这样的说法是错误的,没有什么事物是完美的)。尽管如此,编写出尽可能最好的代码是软件工程师的首要任务。有的时候,这意味着我们要在项目进度、客户需求、管理要求、疲劳这几方面进行平衡。

底线:“工作”的代码并不总是“完成”。如果编码人员的工作是生产解决问题的产品,那么解决问题的方法是否重要? 是。 从长远来看,软件做得很好,每个人都受益,包括客户,用户,公司和编码员。代码混乱,匆忙或“足够好”的代码,这是着眼于短期回报的体现。

即使是优秀整洁的代码,在一段时间过后也会显得糟糕不堪。而且会比你预想中的要坏。

马丁认为,编写整洁的代码的关键是高质量的输入(周全,可维护,灵活的代码),可以产生高质量的输出(长期业务收益)。

2. 你今天的努力可以减轻日后的负担

我们所有人都经历过使用低质量产品所带来的失望。想象一下,​​在洗衣机中几分钟就会磨损边缘的新衬衫,或者是在你的孩子将它从包装盒中取出后立即打破的塑料玩具。制作精良的代码也是这样,它在边缘处的碎片速度比您预期的要快得多。(所以我们需要边界值测试)

你可以试着跟一些质量很好的东西进行比较。有一双鞋我每天都穿,并且穿了十年,这几天终于破了。这双鞋比其他鞋子贵一点,但它的质量是不可否认的,从长远来看,我省钱了。当时间终于把这些鞋扔出去时,我又买了一双相同的对,因为我知道这双鞋又会陪伴我十年。

同样的原则适用于代码。高质量的输入不仅可以产生更持久的输出,还可以节省资金并建立客户忠诚度。精心重构和测试您的代码可能需要更长的时间,但技术债务和可维护性的节省非常值得额外的努力。

3. 你的代码不只是你自己的

以自己的工作为荣,这很重要。 认识到你编写的代码不是你自己的代码同样重要。

过于聪明的技巧,黑客和程序手的技巧只对作者有趣。

这可能看起来有点悖论 - 毕竟,编写干净的代码需要您与其质量相媲美。 但好的代码并不是真的,因为它的目的是供他人使用:你的队友,你的客户,甚至你未来的自我。 当一些未来的项目维护者(甚至可能是你自己)无法理解为什么你用你的方式写东西时会发生什么? 毫无疑问,他们必须花费宝贵的时间和精力来解读你为他们留下的谜题。


什么是整洁的代码?

每个人都有他(她)独自的如何编写整洁的代码的列表。事实上,马丁的书中有各种各样的软件名人给出的整洁的代码的定义集合。根据我在本书中学到的内容,我的定义如下:

  1. 整洁的代码是简单的。在算法或系统级复杂性方面可能并不简单,但在实现方面肯定很简单。 过于聪明的技巧,黑客和程序手的技巧只对作者有趣,并削弱了代码的长期价值。 对于冗长的代码来说也是如此,需要永远才能达到目的。

  2. 整洁的代码是可读性强的。如果程序中使用的命名约定,间距,结构和流程不是为读者而设计的,那么该读者几乎肯定无法理解原作者的意图。 关于如何编写可读代码的约定可能看似教条或缺乏表达性,但它们有助于使代码公共而不是晦涩难懂的。

  3. 整洁的代码是体贴的。没有尽力告知未来读者的代码是不尊重他们时间的代码。 清洁代码的编写应该假设未来的消费者是聪明的,有思想的专业人士(像你一样),它应该不遗余力地帮助他们。

  4. 简洁的代码是经过测的。没有人能够在第一次就写出没有BUG的代码。即使假如能够做到,没人能保证这完美的代码在之后不会出错。写出整洁的代码代表着写出经过测试的代码。这样,未来的用户可以确信他们正在和有效的软件进行交互。此外,在进行修改时,他们还会有一个现成的测试组件,以确保程序没有问题。

  5. 持续践行写出整洁的代码。编写整洁的代码需要良好的肌肉记忆,就像玩乐器,踢球或煎蛋一样。学习编写整洁代码的最佳方法。更重要的是,坚持做下去。当你在家里从事个人项目时,即使没人会看你的代码,你也要用整洁的代码来做。

  6. 整洁的代码是被无情地重构出来的。清洁代码应该处于不断的重构状态。而你需要有一个很好的测试套件来备份你的代码,你可以随心所欲地重构它,从不担心破损。

  7. 整洁的代码是SOLID。整洁的代码同时也是整洁的设计,遵循SOLID原则是确保你的代码具有灵活性、可维护性、和持久性的方法。

在 程序设计领域, SOLID(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)是由罗伯特·C·马丁在21世纪早期引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则。当这些原则被一起应用时,它们使得一个程序员开发一个容易进行软件维护和扩展的系统变得更加可能。 SOLID所包含的原则是通过引发编程者进行软件源代码的代码重构进行软件的代码异味清扫,从而使得软件清晰可读以及可扩展时可以应用的指南。SOLID被典型的应用在测试驱动开发上,并且是敏捷开发以及自适应软件开发的基本原则的重要组成部分。

如果我们将马丁的书作为圣经,那么“整洁”的属性可以成倍增加。但仔细阅读《代码整洁之道》后,这个清单是一个很好的起点。坚持这些原则需要不断关注细节,并愿意承认你昨天所写的内容今天仍然可以改进,即使这段代码运行的很好得很好。


尽管《代码整洁之道》包含了大量有用的规则和最佳实践,但它对读者所蕴含的心态可能更有用,我们要有工匠精神,你今天的努力可以减轻日后的负担,你的代码不只是你自己的。编码员阅读的越多,世界代码就越整洁,我们的所有工作都会变得更容易。

译者的话

之前翻译的那几篇太多链接了,无法发到微信公众号等平台,然后就找了一篇没什么链接的文章。我翻译了大概四五天,每天一个小时。英语不好实在是。。。下次不敢再翻译文字这么多的文章了。

参考

What Is Clean Code? 原文

每日一图

image

George Bellows “Giant Sky” 1913

niracler wechat

本文作者:niracler
本文链接: www.niracler.com/2019/03/09/什么是整洁的代码/
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容