这本书的英文名是 The Clean Coder, 中文译名是《代码整洁之道:程序员的职业素养》,跟《代码整洁之道》是同一个作者。这本书与具体的代码技巧关系不大,主要就讲了一件事——如何做一名专业的程序员。

挺薄一本书,内容都是日常所见,加上翻译也不错,所以读起来感觉轻松流畅。书中多数内容早已在实践,我印象最深刻的是这样几点:专业人士的态度,要重视测试,如何预估项目,以及对「流态区」的看法。

态度

专业人士至少应当有这样的态度:负责任,有担当。尽可能不出错,能为自己的错误负责。

测试

书中多次讲到「测试」,并且有专门的一章「测试驱动开发」,也就是 TDD。专业人士不破坏软件功能,不破坏软件结构,都需要靠覆盖率 100% 的测试来保证。

开发者自己写单元测试,一方面让代码质量得到保障,另一方面单元测试可以描述函数的意图,单元测试即是文档。遵循 TDD 的法则,为了能够让代码更「好测」,能够促使程序员在开发时对代码做出更好的设计。此外,开发者要辅助 QA 和业务人员写验收测试来明确开发需求。

预估

预估和承诺是两回事。

对于如何预估软件项目要花的时间,书中介绍了 PERT 预估法,有三个关键因素:乐观预估 O,标称预估 N 和悲观预估 P。

期望值 u 的计算公式是:

u = (O + 4N + P) / 6

标准差 σ 的公式是:

σ = (P - O) / 6

其他

  • 坚守原则,该说“不”时不能给出暗示性的虚假承诺,面对压力时也不能抛弃纪律和原则不顾。比如,即使工期紧,压力大的时候,也不能置 TDD 于不顾。
  • 保存好自己的精力和创造力,不要在身心疲惫和焦虑时思考代码、写代码。
  • 尽量避免走入死胡同,比死胡同更可怕的是陷入泥潭。

流态区

作者对「流态区」的看法,与我之前看到过的有关「心流」的观点截然相反。我不敢断定他们是不是在说同一个东西,如果是的话,那么跟书中其他内容相比,对「流态区」的描述是跟我的已有认知相差最大的。这也是为什么我给这个概念单拎出来一节内容。

这种意识状态并非真的极为高效,也绝非毫无错误。这其实只是一种“浅层冥想”状态,在这种状态下,为了追求所谓的速度,理性思考的能力会下降。

在流态区状态下,你其实放弃了顾及全局,因此,你很可能会做出一些后来不得不推倒重来的决策。在流态区写代码可能会快些,但是后面你将不得不更多地回头重新审视这些代码。

作者建议避免进入流态区