zoukankan      html  css  js  c++  java
  • 代码整洁之道 读书笔记

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

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

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

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

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

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

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

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

  • 相关阅读:
    BestCoder6 1002 Goffi and Squary Partition(hdu 4982) 解题报告
    codeforces 31C Schedule 解题报告
    codeforces 462C Appleman and Toastman 解题报告
    codeforces 460C. Present 解题报告
    BestCoder3 1002 BestCoder Sequence(hdu 4908) 解题报告
    BestCoder3 1001 Task schedule(hdu 4907) 解题报告
    poj 1195 Mobile phones 解题报告
    二维树状数组 探索进行中
    codeforces 460B Little Dima and Equation 解题报告
    通过Sql语句控制SQLite数据库增删改查
  • 原文地址:https://www.cnblogs.com/afraidToForget/p/9527107.html
Copyright © 2011-2022 走看看