zoukankan      html  css  js  c++  java
  • 《程序员修炼之道》读书笔记(二)--第三周

    <!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和正交的意识,如果有一天我们大家都在不顾一切地做出改动,而每一处改动似乎都会造成别的东西出错,那么项目很有可能是没有进行正交的设计和编码。那么这就是我们重构的时候了。

  • 相关阅读:
    【codevs1002】搭桥(prim)
    【codevs1993】草地排水(最大流)
    NOIP总结
    【codevs1069】关押罪犯[noip2010](并查集)
    第一章 数据库的设计
    Socket与ServerSocket
    关于 httpUrlConnection 的 setDoOutput 与 setDoInput的区别
    java基础复习1
    eclipes快捷键
    List Set Map 的区别 用法以及特点(转载)
  • 原文地址:https://www.cnblogs.com/rui-zhao/p/8608078.html
Copyright © 2011-2022 走看看