tdd - 单一职责原则 (SRP) 是否允许实用程序类

标签 tdd solid-principles single-responsibility-principle

我刚刚回答了一个与 SRP 相关的问题,这让我思考:SRP 如何站在实用程序类上?

根据定义,实用程序类往往会做很多事情。我可以看到在单个接入点与门相关的实用程序是多么有用。根据 SRP 标准,您不能在一类中实现实用程序。这是否意味着实用程序类是禁忌,或者如果它只是多个类的外观,并且每个类都遵守 SRP,SRP 是否允许它?

最佳答案

实用程序类被认为是反模式:

  • 违反您提到的 SRP,因为它通常需要承担多个责任。
  • 大部分是静态类,不利于测试设计能力,不能被mock。
  • 名称本身没有意义,它们通常被命名为 Helper、Util、Utility 或类似名称。

  • 纠正:

    将您的实用程序类划分为更小的具有有意义名称的非静态类,每个类只承担一个责任。

    关于tdd - 单一职责原则 (SRP) 是否允许实用程序类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12891211/

    相关文章:

    c# - 如何用 IOC 替换 switch 语句以便我可以保持 SOLID 原则

    php - 架构设计帮助 - OOP Solid Principle

    java - 设计与用户相关的类

    java - 理解单一职责原则

    php - 外部服务/API请求和响应的抽象

    tdd - 持续集成和验收测试驱动开发

    PHPUnit、接口(interface)和命名空间 (Symfony2)

    c# - 除了集成测试之外,单元测试是否会为这个 DAL 提供程序示例增加任何值(value)?

    api - 在 Yii 应用程序中使用 Restful Api 的 TDD 最佳实践

    language-agnostic - 如何将数据验证与我的简单域对象 (POCO) 分开?