代码整洁之道 读书笔记

 代码整洁之道,英文书名是 The Clean Coder。有人和我一样疑惑吗?中文名究竟是怎么翻译过来的!

我本以为这本书是讲解如何编写代码,像命名规范、模块划分之类。然而书中所讲的内容却和我想的相差甚远,这些内容也许正是我这种过分纠结代码的人所容易忽略的。我未曾从书中得到我所期待的,但得到了更重要的。

1986年,美国发射挑战者号失败,而负责制造火箭的工作人员事先已经发现了存在的隐患。制造火箭的人了解到发射火箭的隐患,多次向火箭发射的管理层反馈,但是没有结果。而对于决定火箭是否发射的当局来说,终止发射带来的时间和经济成本是无法忍受的,而要求终止发射的理由竟然仅仅是有隐患而已。随后,作者提出了两个问题,造火箭的人是否有过失?管理当局是否有过失?这两个问题仁者见仁智者见智。没有唯一的答案,但是却可以讨论。当我们开始讨论这两个问题,就产生了这样的疑问:什么是职业素养?

我想,如果有一段定义可以比较精确地描述什么是职业素养,那一定是极其抽象和隐晦。当我读完整本书,发觉可以这样简单地定义:职业素养即是在描述职业人员应该做什么,和应该做到什么。

程序员仅仅是在简单地编写代码吗?若编写代码没有目的,那又有什么意义呢?当程序编码的时候,他是在构建产品。

每个人都写出过bug,但什么时候出现bug却是有区分的。当你在学校学习的时候,写出bug很好,那说明你发现了自己的某些问题。在工作中,你写出了bug,但是在提交代码之前修改好了,这是合理的。一旦bug出现在最终的产品中,这将是不可容忍的,当然你很有可能因此而失业。另一个问题,程序应该把未经测试的代码交给质量保证人员吗?即程序应该保证代码的质量吗?也许有人会说,如果程序员把代码都测试过了,那还要测试人员干什么?实际上任何职业都应该保证他的工作成果是有效的,有质量保证的。程序员也不例外。我听过一些高级的程序的观点:程序应该自己写单元测试,保证代码没有问题,对于前段而言,虽然很难写出完整的单元测试,但是可以尽量多地点击按钮来保证质量。而对于刚才的问题,也许可以这样回答:测试人员进行的测试和程序员自测的过程是不同的,程序自测相当于白盒测试,而测试人员进行的则是黑盒测试。

有一点我必须事先申明,书中所表述的观点偏向于理想状态。而理论和实际多少是有差距的。就好像有些老师教育学生应该如何做,而自己却不能遵守规则。书的作者通过讲述自己的经历的错误来表达观点,这恰恰说明他没有完全按照书中表述的观点来做事,起码之前没有完完全全地遵守。

程序需要保证质量,这意味着他需有充足的时间。理论上,程序应该向客户要求足够的时间完成产品,但实际上则两者总是有冲突,而且富有经验的程序员也可能估计错误时间。这并不意味着程序可以放松产品的质量,它然而要求程序员已经编写的代码都是稳定可靠的。即你可以只提交部分功能,但这些已经提交的功能必须是可靠的。这可能意味着你的代码是低耦合的,模块间的划分是比较清晰的。书中讲的这些职业素养也许不能直接帮助你提高编码的水平,但凡是实现了这些要求的代码一定是高质量的,因为我没有理由相信,安全稳定可靠的程序会是写的一团糟。

原文地址:https://www.cnblogs.com/afraidToForget/p/9527107.html