• 为什么我们需要可测试的面向对象开发(翻译 )


    原文:Why you should think about TOOP- Testable Object Oriented Programming
    
     作者:Typemock首席架构师Roy OSherove ---The Art of Unit Testing: With Examples in .Net的作者

    我觉得面向对象设计\编程( Object Oriented Design\Programming)是时候要做些改变了。

    质量和对可测试性、持续集成的追求在业界已经开始萌芽。

    我们需要思考一个简单的事实:在很多情况下,纯OOD和可测试设计在概念上有些许冲突。我曾经写过一篇文章,FXCop为了追求纯粹的面向对象,移除了一些利于可测试性的特性(当然,作者鄙视了FXCop的团队)。

    以下是一些关于OOD/OOP要求“隐藏”,而可测试性(Testable Design)设计建议“公开”的例子。

    OOD:不要公开那些不需要其他开发者使用的私有成员或者方法。

    Testable:通过接口,依赖注入,开放setters方法等方式 公开或者替换 那些对象里私有的成员。

    OOD:除非你需要让别人扩展,否则把类给密闭(seal)了。

    Testable:默认不允许密闭(除非安全方面考虑)以便使用者可以重用你的方法并按照他们的测试需要override。

    OOD:只在你需要用户override你的方法时才让你的方法virtual。—-因为java默认是virtual,所以作者在这点上喜欢java。

    Testable:只要可能,默认让你的方法virtual,这样那些需要写测试的人可以继承和override你的方法来解除一些依赖。

    OOD:使用单例方法来确保只使用一个实例,不允许任何人触及私有对象。

    Testable:允许为了测试中解除依赖去替换单例对象。

    OOD:除非需要,否则类型默认为private或者interna。

    Testable:开放API里那些你认为有助于测试项目的类型。

    OOD:不要添加那些非必须的APIs。

    Testable:添加特定的API(方法,接口,尤其类型)方便测试,这些对测试来说是必须的。

    如果我们把”可测试性“添加到OOD词汇中会怎样呢?

    “Testable Object Oriented Design: TOOD“(可测试的面向对象设计)

    “Testable Object Oriented Programming: TOOP“(可测试的面向对象编程)

    让两个词汇贯彻在开发设计中,更加重视可测试性的需求。很多情况下,如果不遵从一些面向对象的最佳实践(多态这个特性对于可测试的设计就是非常重要的),

    TOOD和TOOP可以让你的设计更加SOLID

    (参考Bob Martin的SOLID设计原则。这一系列原则经久不衰,它包括单一职责原则(Single Responsibility Principle),开闭原则(Open Closed Principle),里氏替换原则(Liskov Substitution Principle),接口分离原则(Interface Segregation Principle),依赖反转原则(Dependency Inversion Principle)。)

  • 相关阅读:
    android videoView 加载等待
    LocalBroadcastManager
    sessionStorage 、localStorage
    javascript 数组、json连接
    properties 文件注意事项
    nutz 使用beetl
    [Git/Github] ubuntu 14.0 下github 配置
    【UNIX环境编程、操作系统】孤儿进程和僵尸进程
    【操作系统】进程间通信
    【操作系统】线程
  • 原文地址:https://www.cnblogs.com/brightwang/p/2506589.html
Copyright © 2020-2023  润新知