如果刚开始写代码时能读一读《整洁代码的艺术》那是个不错的选择。这本书会告诉您, 如何应用九大原则来提高编程能力。 良好的编程技能带来更整洁的代码, 让您更专注、更有效地利用时间,得到更高质量的结果。只要应用本书中提到的那些原则,您就能更快地成为熟手程序员。
整洁代码的艺术
程序员的实用工具书,Python网站Finxter的创办人多年经验的结晶。传递"减少和简化"的代码编写思想,教您应用九大原则提高生产力、做到事半功倍。
本书旨在帮助您过上更专注的程序员生活, 让日常工作变得更高效。《整洁代码的艺术》将告诉您如何通过编写整洁、精练、专注、更易阅读和编写、更易与 其他程序员协作的代码来提高生产力。 您将学习如何编写整洁的代码、创建专注于做好一件事的函数、打造快速和响应式的应用程序、设计专注于易用性和美学的用户界面、利用最小可行产品来规划产品路线图。我甚至会告诉您, 实现纯粹的专注状态可以极大地提高您的注意力, 帮助您从任务中体验到更多的兴奋和快乐。
对严肃的编码者来说, 不断提高专注力和生产力至关重要。做更有价值的工 作, 往往会获得更大的回报。然而, 简单地增加产出不是办法。坑在这里: 如果写更多代码, 创建更多测试, 读更多书, 学习更多, 思考更多, 沟通更多, 认识更多人, 我就能完成更多工作。 但是, 如果您不能少做事,就不能多做事。时间有限,您每天有 24 小时,每周有 7 天,就像我和其他人一样。有个躲不掉的数学限制: 在有限空间里, 一样东西增加, 其他东西必然缩减, 才能腾出地方。读 更多书,可能就会遇到更少人。遇到更多人,可能会写更少代码。写更多代码, 可能只会有更少时间与您爱的人在一起。
本书不关注做更多事的明显后果, 而是从另一角度来讨论: 减少复杂度, 从而减少工作量, 同时从结果中获得更多价值。深思熟虑、追求极简是个人生产力 的“圣杯”。而且,正如您将在后面的章节中看到的,它很有效。您可以通过正 确的计算机编程方式和使用本书提出的恒久原则,用更少资源创造更多价值。
通过创造更多价值, 您也可以获得更高报酬。比尔 ·盖茨有句名言: “车床 操作顶尖高手的工资是普通车床操作员的几倍, 但顶尖软件开发者的价值是普通 软件开发者的 1 万倍。”
其中一个原因是, 软件开发高手执行的是一种高度杠杆化的活动: 以正确的方式对计算机进行编程, 可以取代成千上万的工种和数百万小时的有偿工作。例 如, 运行自动驾驶汽车的代码可以取代数百万人类司机的劳动, 同时更便宜、更 可靠、 (也许)更安全。
本书为谁而写
您是否曾发现自己深陷于找缺陷的泥潭里?代码的复杂性是否经常令您不知所措?您是否对下一步学什么无所适从, 不得不从数百种编程语言——Python、 Java 、C++ 、HTML 、CSS 、JavaScript 以及成千上万的框架和技术——Android 应 用、 Bootstrap、TensorFlow、NumPy 中选择学习对象?如果以上问题的答案为 “是”,那么您就选对书了!
这本书是为每一位有意提高生产力、做到事半功倍的程序员准备的。如果您 崇尚简洁,并且相信奥卡姆剃刀原则——“能少费劲就别多费劲”,那么这本书就适合您。
您将学到什么
本书将告诉您, 如何通过应用九大原则, 将您作为程序员的能力提高几个数 量级。这些原则将简化您的生活, 减少复杂度、无谓的挣扎和工作时间。我并不 是说这些原则都是新概念,它们都是众所周知的既定原则——被最成功的程序 员、工程师、哲学家和创造者证明有效。这就是它们成为原则的首要原因!然而, 在本书中,我将把这些原则放到程序员身上,给出真实示例,并尽可能给出代 码范例。
第 1 章讨论提高生产力价值的主要挑战: 复杂性。您将学会找出生活和代码中的复杂性来源, 理解复杂性会损害生产力和产出。复杂性无处不在, 您需要持 续警惕, 保持简单!
在第 2 章中,您将了解 80/20 原则对程序员的深远影响。大多数效果(80%) 来自少数起因(20%)。这一原则在编程工作中无处不在。您会了解到 80/20 原则 具备分形特征: 20%的程序员中的 20%将获得 80%的工资。 换句话说, 世界上 4% 的程序员赚走了 64%的钱。对持续杠杆和优化的追求永不过时。
在第 3 章中,您将学习打造最小可行产品,尽早测试您的设想, 尽量减少浪费, 并提高“构建、测量和学习”周期的速度。中心思想是通过尽早获得反馈来了解在何处投入精力和注意力。
在第 4 章中,您将了解到编写整洁和简单代码的好处。与大多数人的直觉相 反, 编写代码首先应当最大限度地提高可读性, 而不是最大限度地减少中央处理 器(CPU)周期使用率。全体程序员的时间和精力比 CPU 周期要稀缺得多,而 编写难以掌握的代码会降低组织的效率,以及我们人类集体智慧的效率。
在第 5 章中,您将了解性能优化的概念基础和过早优化陷阱。计算机科学之 父高德纳(Donald Knuth)曾经说过: “过早优化是万恶之源!”当您确实需要优 化代码时,利用 80/20 原则:优化占用 80%运行时间的那20%函数。消除瓶颈, 忽略其余部分,然后再来一遍。
在第 6 章中,您将和我一起进入米哈里·契克森米哈(Mihaly Csikszentmihalyi) 激动人心的心流世界。心流是一种纯粹的精神集中状态,它能成倍提高生产力。 而且, 据计算机科学教授卡尔 ·纽波特(Cal Newport) 所言, 心流有助于围绕深 度工作建立一种文化。本章中将引用纽波特教授的一些观点。
在第 7 章中,您将了解 Unix 哲学, 即只做一件事并把它做好。 Unix 的开发 者没有采用拥有大量功能的单体(而且可能更有效的) 内核, 而是实现了一个具 有许多可选辅助功能的小内核。这有助于 Unix 生态系统的扩展,同时保持整洁 和(相对)简单。我们将看到如何将这些原则应用于工作中。
在第 8 章中, 您将进入计算机科学中另一个得益于极简主义思维的重要领域: 设计和用户体验(UX)。想想雅虎搜索(Yahoo Search)和谷歌搜索(Google Search)、黑莓(Blackberry)和 iPhone,以及 OkCupid 和 Tinder①之间的差异。最 成功的技术产品往往有着极其简单的用户界面。原因是,在设计中, 少即是多。
在第 9 章中,您将重新审视专注的威力,并学习如何将其应用于不同领域, 从而极大地提高您(和您的项目)的产出。
最后, 我们将做一个总结, 提供可操作的下一步措施, 并让您带着一套可靠 的工具去简化这个复杂的世界。