《代码整洁之道》读书笔记

我是图片

前言

我为什么会选择阅读这一本书呢?书中给出的原因简介明了:首先我是程序员,第二我想成为更好的程序员。从这两点我们可以看得出来,作者的对于程序的看法是,能写出“整洁”代码的程序员必定是个优秀的程序员,写出“整洁”代码在作者看来是一个程序员需要发展和具备的一项素质。至于什么是“整洁的代码”,将会在下文进行讨论

什么是整洁的代码

在理解什么是整洁代码的时候,有必要先了解什么是糟糕的代码,以及糟糕代码带来的危害性。

当然,我并不会粘贴出那些写的很糟糕的代码,因为我觉得这样没有任何一点意义,因为糟糕的代码千差万别,因为每个程序员的代码风格不一样。糟糕代码给人的感觉都是一样的,可以用一个词来形容:沼泽。就像你躺过代码的水域,想穿过灌木密布、瀑布暗藏的沼泽地,但是最后越陷越深。书中的举了个例子,指出糟糕的代码会使生产力下降,严重可以毁掉一家公司。

那么是什么原因导致写出糟糕的代码呢。总结有一下几点:

  • 技术水平低
  • 项目紧迫时间不足
  • 缺少整洁代码的意识
  • 先上线后优化,但是没有列入工作任务中导致忘掉

纵观以上几点,可以看出即使是有经验的程序员也有可能写出糟糕的代码。、

那么整洁的代码给人是什么样的感觉呢?

书中用了一个形容词非常形象的说明了这个问题:愉悦。

书中引用了很多名人的话语来说明了整洁代码所具备的几点特性:

  1. 优雅和高效

    代码逻辑应当直截了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化

  2. 整洁的代码只做好一件事

    整洁的代码力求集中。每个函数、每个类和每个模块都全神贯注于一事,完全不受四周细节的干扰和污染。

  3. 整洁的代码简单直接

    整洁的代码如同优美的散文。整洁的代码从不隐藏设计者的意图,充满了干净利落的抽象和直截了当的控制语句。

整洁代码的重要性

了解糟糕代码的严重性后,代码整洁的重要性其实也不言而喻了,那为什么我还要再次声明呢?不为别的,就是因为写出整洁的代码是在是太重要了。

那我们实习生举例,刚进来公司的实习生,公司一般都是交付现有项目上的一些新需求,不会让一个实习生去从0到1的做一个项目,说白了就是要维护公司的项目。在我接触熊猫后台的这个月时间里,发现了项目中有些代码不容易维护,或者扩展,有些组件用起来感觉有依赖性。

当然这个项目大部分都是容易维护的,我只是拿这个例子来显出代码整洁的重要性,因为我们大部分的时间都在维护代码,而不是去创造代码,先阶段写出的代码整洁与否,直接决定了项目维护成本的走向。

有些人认为代码是写给机器执行的,我不那么认为。

代码是写给人看的。

先有人写出代码,机器才能执行,连代码看都看不懂,更别说写的出来了,写不出了就证明代码维护成本实在太高。我并不是在危言耸听,可能有个说法是以后人工智能和机器学习可以创造出代码,先不讨论研发出这一技术体系的时间,首先我们写业务要深入业务的各方各面,甚至整一条业务链,业务千千万万,变化也千千万万,而每一个业务都是有精确性的。

代码确然是我们最终用来表达需求的某种语言。我们可以创造各种与需求接近的语言。我们可以创造帮助把需求解析和汇整为正式结构的各种工具。然而,我们永远无法抛弃必要的精确性–所以代码永存。

所以整洁代码是势之所驱。

下面我们就来讨论下写出整洁代码的方法论。

写出整洁代码的小技巧

写出整洁代码的首要原则,我觉得是态度。

只有在态度上明确要写出整洁的代码,自然会在编码过程中把写出整洁代码的小技巧给运用起来。

我总结了几点小技巧:

  1. 贯彻单一原则,把耦合的函数才分成最小的功能单元,函数只做一件事
  2. 提高表达力

    在必要的一些特殊说明的地方要写TODO注释,提醒下别人

  3. 命名规范

    最好的是对变量和函数的命名上下功夫,函数的首单词最好是个动词,读起来就知道是干嘛的

  4. 减少重复代码