首页 > 编程语言 >《程序员修炼之道:从小工到专家》阅读笔记三

《程序员修炼之道:从小工到专家》阅读笔记三

时间:2022-10-02 19:14:11浏览次数:45  
标签:DRY -- 小工 系统 正交 程序员 修炼 模块 代码

第二章:注重实效的途径

生活在一个时间与资源有限的世界。

七、重复的危害

知识变化,对需求的理解与客户会谈发生变化,政策更改--维护上更花时间。

维护:整个开发工程的例行事务。--程序员要持续不断地维护因为理解逐日变化。

DRY原则:Don’t Repeat Yourlf :系统的每个知识必须具有单一、无歧义、权威的表示。

使开发变得易于理解和维护唯一途径(作者称我们):遵循DRY。

两种或更多地方表达同一事物:改变一处,改变其他处。

重复发生:强加,无意,无耐性(开发者偷懒),开发者之间。

    强加的重复:信息的多种表示,发挥自己的才智,代码中的注释要可信,先撰写文档再编写代码(一般情况下),语言带来的问题:多思考。

    无意的重复:可能来自设计的错误,多个相互依赖的书数据元素中出现不规范数据,因性能原因违法DRY原则--使影响局部化。

    无耐性重复:时间的压力--驱使最优秀的人走捷径的力量。(欲速则不达)

    开发者之间的重复:阅读他人的源码与文档,不管是非正式的还是进行代码复查。

让复用变得容易:营造一种环境,在其中找到并复用已有的东西,比自己编写更容易。不进行复用,会有重复知识的风险。

八、正交性

正交性:计算技术中,表示某种不想依赖性或是解耦性。如果两个或更多事物中的一个发生变化,不会影响其他事物。数据库代码与用户界面正交:更换数据库,而不用改动界面,反之亦然。

    好处:消除无关事物之间的影响。

非正交系统:改变与控制更为复杂。

任何系统的各组件互相高度依赖时,将不会有局部修正(local fix)的事情。

正交的系统:提高生产率与降低风险。

      生产率:1、改动局部化,使得开发时间与测试时间降低。

          2、正交的途径能够促进复用。

          3、对正交的组件进行组合,生产率会有相当微妙的提高:一个组件做M件事情,另一个N件,如果两者正交,组合在一起便能做M乘N件。

      降低风险:1、正交能降低任何开发中的固有风险。

           2、有问题的代码区域被隔离。

           3、所得系统更健壮。

           4、正交系统很可能得到更好的测试,因为设计测试、并针对七组件运行测试更容易。

           5、不与特定供应商、产品或是平台紧绑在一起,因为与这些第三方组件的接口被隔离在全部开发的较小部分。

项目团队:正交的团队效率更高,但也仍要鼓励团队不断相互交流。

设计:分层,提供一级抽象。如果显著地改变某个特定功能背后的需求,在正交系统中,应该只有一个模块受到影响。不要依赖无法控制的事物属性。

工具箱与库:引入第三方工具箱和库时,注意保持系统的正交性。正交性的另一个变体时面向方面编程。

编码:1、保持解耦:不会没有必要地向其他模块暴露任何事情、也不依赖其他模块的实现的模块。

   2、避免使用全局数据:可能带来麻烦。一般,把所需的任何语境(context)显式的传入模块,代码将更易于理解和维护。面向对象应用中,可创建含有语境的结构,并传递指向这些结构的引用。

   3、避免编写相似的函数。

养成不断批判对待自己的代码的习惯。

重构(refactoring):寻找任何重新进行组织、以改善其结构和正交性的机会。

测试:

  正交地设计和实现的系统更易于测试,因为系统的各组件的交互式形式化的和有限的,更多的系统测试可以在单个的模块级进行。建议每个模块都拥有自己的、内建在代码中的单元测试,并让这些测试作为常规构建过程的一部分自动运行。

  构建单元测试:是否必须把系统其余的很大一部分拽进来:发现没有很好地解除与系统其余部分耦合的模块。

  修正bug。

  是否只改动一个模块,或者改动分散在整个系统的各个地方:做出改动时,是修正了还是出现其他问题--开始运用自动化的好机会。

文档:坐标轴是内容和表现形式。对于真正正交的文档,你应该能显著地改变外观,而不用改变内容。

认同正交性:

      其与DRY原则紧密相关

                运用DRY原则:寻求系统中的重复降至最小。

                运用正交性原则:降低系统的各组件间的相互依赖。

                                       开发的系统将更为灵活、易于理解、调试、测试和维护。

九、可撤销性

可撤销性:

    遵循相关的建议--特别是DRY原则、解耦以及元数据的使用---不必做出许多关键、不可逆转的决策。

    我们并非总能在一开始做出最好的决策--采用某种技术,找不到足够具有必要技能的人或与开发软件速度相比,需求、用户及硬件变得更快......

    错误在意假定决策是浇筑在石头上的--同时还在于没有为可能出现的意外时间做准备。

    要把决策视为写在沙滩上的-----大浪随时可能到来,将它们抹去。

不存在最终决策。

灵活的架构:

      保持代码灵活性,还要考虑维持架构、部署及供应商集成等领域的灵活性。

      预先考虑:不确定市场部门想怎样部署系统--单机、客户-服务器或n层模型--只需改变配置文件。

      通常,将第三方产品隐藏在定义良好的抽象接口后面。无论用何种机制,让它可撤销。

      让代码学会“摇滚”:可“摇”就“摇”,必须“滚”就“滚”。

 

标签:DRY,--,小工,系统,正交,程序员,修炼,模块,代码
From: https://www.cnblogs.com/uninan/p/16747818.html

相关文章

  • 国庆节请收下来自程序员的浪漫祝福
    请允许我用22种编程语言,祝福伟大的祖国,国庆快乐!JavaScript:alert("我爱你,祖国")HTML:我爱你,祖国C:printf("我爱你,祖国");C++:cout<<"我爱你,祖国";QBasic:Print......
  • 程序员修炼之道:从小工到专家-读后感九月01
    首先在家要打好扎实的基础,不要只追求时髦的技术,打好基础再去学那些技术或者参加培训,对自身的发展会更好;多看一些书籍,如算法导论,编程珠玑,代码大全等,了解作为   一个软件......
  • 《程序员修炼之道:从小工到专家》——读后感1
    此次读后感写于读完《程序员修炼之道:从小工到专家》的序和第一章1.编程是门技艺,程序员既要倾听需求,又要解释命令;为工作建立文档,让工作工程化,使他人能理解它。kaizen——每......
  • 《程序员修炼之道——从小工到专家》第二章
        虽然最近有些小忙,但我还是抽出了一些时间把这一章的内容大致看了一下,这一章的标题为《注重实效的途径》,顾名思义,它是为我们在开发工作中提高实效提出方法的。......
  • 程序员的修炼之道-- 从小工到专家 第二章读后感
      该书第二章开讲述的是重复的危害,重复分为好多种,但每种重复的出现都是没必要的,重复的出现使得代码的运行效率大打折扣,并且占据了很多无意义的空间。要想解决重复的问题,......
  • 程序员修炼之道读后感(1)
    在老师的建议下我这个月开始空闲时间阅读《程序员修炼之道-从小工到专家》这本书,目前读完了第一章——注重实效的哲学。该章节主要讲述的是一些程序员该如何去思考,如何去完......
  • 程序员修炼之道 读后感1
    我认为它是写给程序员看的一本哲学书,因为它侧重的是提升程序员的思维能力,而不是具体的实操能力或者专业知识。看完这本书后,不会给人一种立刻就能上手使用的效果,但是它......
  • 程序员修炼之道 读后感2
    第一章注重实效的哲学在所有的弱点中,最大的弱点就是害怕暴露弱点。程序员整天与最后期限、BUG打交道,不可能不犯错误,一个软件项目中还有许多因素根本就不是程序员所控制的,......
  • 程序员修炼之道——从小工到专家读后感2
    在开发过程中出现未曾预料的技术问题,交付晚了等情况,没关系,这些是无法避免的。发生了,我们就要尽可能想方设法地职业的去处理它们。程序员这个职业需要诚实和坦率,要敢于承认......
  • 《程序员修炼之道:从小工到专家》读书笔记2
    除了是程序员,AndyHunt还是一位木匠和音乐家,你LD将v到h与这样的背景粕关单引擎飞机。尽管作者未曾明言,在本书的许多地方、你都将看到与这样的背景相关的叙述。我想,对于两位......