《程序员修炼之道》读书笔记(二)--第三周

<!doctype html>

The pragmatic programmer(2).md

程序员修炼之道(二)

读书笔记--第三周


第二章 注重实效的途径

DRY原则:系统中的每一项只是都必须具有单一、无歧义、权威的表示。

  • 强加的重复:

    • 信息的多重表示。编写简单的过滤器或代码生成器,可以在每次构建软件时,使用简单的代码生成器,根据公共的元数据表示构建多各种语言下单的结构。可以根据在线数据库schema、或是最初用于构建schema的元数据,自动生成类定义。这本书就是一个例子:这本书中摘录的代码,由预处理器在作者每次对文本进行格式化时插入。诀窍就是让该过程成为主动的,这不能是一次性转换,否则就会回退到重复数据的情况。

    • 代码中的文档。糟糕的代码才需要注释,我们需要把低级的知识放在代码中,它属于那里;把注释保留给其他的高级说明。否则,我们就是在重复知识,而每一次改变都意味着既要改变代码,也要改变注释。举个反面例子

       

      这样就犯了低级的知识放在了代码中的错误,好的方法是这么写:

       

      这样不需要注释也知道这个是直径。

    • 文档与代码。文档和代码都含有同一知识的表示。

    • 语言问题。

  • 无意的重复:

    • 例子:一个表示线段的类

       

      重复原因:每改变一个点,都要改变长度,重复!

      好的写法:

       
    • 有时为了性能而选择违反DRY原则。通常:需要缓存数据,以避免重复昂贵的操作时。其诀窍是使影响局部化。对DRY原则的违反没有暴露给外界:只有类中的方法需要注意“保持行为良好”。在可能的情况下,应该总是用访问器函数来写对象的属性。这将使未来在增加功能(比如缓存)变得更加容易

  • 无耐性的重复:

    • 相似的程序拷贝代码并在其基础上做改动,可以节省几秒钟时间,但是以后可能损失几个小时。欲速则不达!
  • 开发者之间的重复:

    • Make it easy to reuse.

      • 要营造一种环境,在其中要找到并复用已有的东西,比自己编写更容易。如果不容易,大家就不会去复用,而如果不进行复用,我么就有重复知识的风险。

正交性

  • 什么是正交性:某种不依赖性或是解耦性

  • 正交的好处:消除无关事物之间的影响

    • 设计自足的祖籍按:独立,具有单一、良好定义的目的。

    • 提高生产率和降低风险。

      • 提高生产率

        • 改动得以局部化,设计、编写简单的组件,对其进行单元测试,然后把它们忘掉。
        • 促进复用。
      • 降低风险

  • 项目团队:

    • 正交的团队效率更高(尽管如此,我们依然鼓励自团队不断地相互交流)。
  • 编码:

    • 让你的代码保持解耦
    • 避免使用全局数据
    • 避免编写相似的函数

    养成不断地批判对待自己的代码的习惯。寻找任何重新进行组织、以改善其结构和正交性的机会。这个过程叫做重构,它非常重要!

正交性与DRY原则密切相关。运用DRY原则,实在寻求使系统中的重复降至最小;运用正交性原则,可以降低系统的各组件间的相互依赖。在做project时紧密结合DRY原则,运用正交性原则,将会发现开发的系统变得更加灵活、更易于理解,并且更易于调试、测试和维护。

我们已经开始了我们的project,但是还没有开始code,提前看了这个让我有了code时候注意DRY和正交的意识,如果有一天我们大家都在不顾一切地做出改动,而每一处改动似乎都会造成别的东西出错,那么项目很有可能是没有进行正交的设计和编码。那么这就是我们重构的时候了。

原文地址:https://www.cnblogs.com/rui-zhao/p/8608078.html