• 现在来看The Art of Unit Testing With Examples in .NET的第三章“Using Stubs to Break Dependencies”

    • 作者使用了三种定义来指向测试中的伪造关系:fakes, stubs 和 mocks。
    • “除了间接层次过多这样的问题之外,没有哪种面向对象的问题是不能通过添加间接层次解决的。”然而,单元测试的诸多精妙之处就在于:如何找到正确的地方添加或使用间接层次,以测试目标代码。
    • 加入间接层次的三个步骤:
      1. 找到待测试方法依赖的“接口”。这里的接口不单单是指面向对象中的接口,还包括与其他类协作需要调用的方法或类。
      2. 如果“接口”与待测方法有“直接关系”(比如直接调用等等),就可以通过向接口加入间接层次,使得待测方法可以被测试。
      3. 将交互接口的“潜在实现”用可以控制的东西替换。
    • 对于Seam(接缝)的定义:

    Seams are places in your code where you can plug in different functionality, such as stub classes. (可参考Michael Feathers的《修改代码的艺术》)

    • 打破依赖的5种方法:
      1. 抽离出接口,以替换潜在实现。
      2. 向待测类中注入stub实现。
      3. 在构造器中接收接口作为函数。
      4. 将接口作为属性,进行设置或读取。
      5. 在调用方法前得到stub。
  • 我们希望系统解决的问题通过需求得以体现。GUI设计是要体现出GUI如何引导用户使用系统以解决他们的问题。很多项目都将GUI设计混同于需求的假面之下,这很让人讶异。如果你的项目总是陷于无尽的需求工作之中,看看问题是不是出在GUI设计上。

    GUI是设计,不是需求

    凯伦,程序经理

    我在一家新公司工作时,试图拯救一个陷入“需求地狱”的项目。需求文档已经达到300多页,而且远未完成。

    阅读这些文档后,我找到了原因。所有的GUI设计都被记录在需求文档中。GUI设计没有放在项目的设计阶段,业务分析人员和GUI设计人员试图将所有的GUI需求都放在需求文档中。他们使用了功能强大的图形设计工具,并在需求文档中定义GUI。

    我向他们询问原因,他们看着我,说道:“这些是GUI需求。”我建议他们认真看看GUI设计,并且考虑这些设计是否应该跟希望系统解决的问题放在一起。GUI设计不应放在需求文档中。

    最终,他们同意采纳我的建议,我们也可以逃离需求地狱了。而且,由于我按照逐个功能重新组织了项目,GUI设计也就跟各个功能结合在一起了。我们定期检查整个GUI的一致性,但是这与需求无关,这属于设计。

    人们很容易在项目开始阶段设计GUI,并称其为需求。如果要这么做,项目就永远无法找到自己的节奏。它会一直陷于需求的泥沼之中,直到最后,无法完成任何客户需要的功能,虽然到时候能够得到精美无比的GUI。

  • 假定项目经理正在管理一个敏捷项目,或是按阶段交付的项目,或是其他生命周期类型的项目,总之这个项目可以用增量式的方式来构建系统。项目经理一直在测量团队的开发速度(或是实现的功能),可是进展速度没有达到预期效果。由于某些原因,团队成员对于如期交付很乐观(见图6.15)。

    图6.15 我们马上会变得更快

    讲求实效的项目经理不愿意发出悲观论调或是冷嘲热讽,他希望让大家认识到现实,帮助团队成员看清真正的进度。说到底,也许他们还是可以赶上进度的。可以采取下面这些措施来管理信马由缰的乐观情绪。

    • 与项目团队成员讨论进展速度。收集数据:是什么样的所见所闻,让他们觉得接下来可以比之前工作效率更高?
    • 测量估算质量因子(见11.2.4节)。有些因素会让人们觉得自己一直在按进度计划开发,甚至超越了进度计划。要特别注意这些因素。
    • 测量团队所做的每一件事情。确定每个人都全力投入到项目中,而且都为了按规定日期交付而开发必要的任务。如果有人在为其他项目工作,或是开发某个后续版本需要的任务,要马上中止这种状况。
    • 如果项目中涉及硬件组件,要测量其挣值(参见11.2.3节),看看它是否能按进度计划进行。如果做不到(现有挣值低于应有挣值),重新规划整个项目吧。
    • 在测量开发速度时,在团队完成第三个迭代之前,对于项目出现的任何整体速度数值都不要感到惊讶。因为只有到那个时候,团队的速度才有可能稳定下来。
  • 2009.4.27 之思

    2009-04-27

    Tag:

    由今之日起,每读一页,力当有所得;每行一事,力当有所值;每过一天,力当不虚度。

  • 又是读库

    2009-03-10

    Tag:

    读库是什么?对于我,《读库》是心中仍保留的那些理想,是每想起来就会心潮澎湃的沧海碣石,是每拿起来就难以搁置的珍藏。然而,日复一日,收到后就放置书堆之中成为了习惯,而理想之于我也渐渐变成了背在身上的读库纪念包,每到周末要外出时,才能拿起来挎在肩上。

  • 强文收录

    2009-03-02

    Tag:

    http://my1510.cn/article.php?0678531256d60572

     

    非对政治与官场文化洞达者,不得完成此文,

    试摘录一二:

     

    唐僧作为未来领导者,不足之处,一是没有神际关系网,二是没有政绩,三是没有班底,四是没有威望。要解决这些问题,十万八千里的取经,足矣。唐僧的嫡系班底就是三个徒弟,全部是体制外动物,而且全部是政治链低端动物,这是如来有意安排的,说穿了,三个徒弟代表的是广大中下级神仙妖怪,简称三个代表,这就给了广大体制外人物一个晋升的希望,一个晋升的路子。


    取经路上,为什么那些妖怪许多是天上的座骑、童子下凡变的,而孙猴子为什么动不动就上天去搬救兵,说白了,联络各部关系,让各位大仙认识一下唐僧,在战火中培养出革命的感情,以使唐僧接触各方神圣,建立神际关系网,以便将来登基顺利。事实也表明,取经的一路上,所有的重量级政治人物都出面了,象什么四圣试禅心,黎山老母、南海观音、普贤、文殊全部出场,用意还不明显么?

  • keywords…

    2009-02-22

    Tag:

    before 10:

    5.8 U.S. bomb Embassy

    7.22 Law Circle Gongfu

    before 20:

    5.2 iron curtain

    something…

    11.9 berlin wall

    before 30:

    1.28 Deng U.S.

    2.17 Vietnam, Khmer Rouge

    12.6 Spring of BJ

    12.9 Formosa

    before 40:

    3.2 Pearl Island

    7.20 Moon landing

    11.21 ARPANET

    before 50:

    4.18 Liu Chairman

    7.14 10,000 words

    before 60:

    6.28 NATO

    SOMETHING…

  • 个人目标

    2009-02-12

    Tag:

    1. 推迟满足感
    2. 减少在制品

  • 酱油诗一首

    2009-02-04

    Tag:

    凭栏极目莫太息,

    雾锁大江应有期。

    长风破浪会有时,

    沽酒荡舟享暇颐。

  • 你爱看电影么?

    2009-01-24

    Tag:

    当我们年轻时,我们爱看电影,因为那里面是别人的生活;

    当我们中年时,我们也许没时间看电影,因为我们正在经历生活;

    当我们年老时,我们也许享受、也许害怕看电影,因为那里面是我们的生活