【问题标题】:To static or not to static [duplicate]静态或非静态[重复]
【发布时间】:2011-02-28 08:31:30
【问题描述】:

我真的很喜欢使用静态方法(尤其是帮助类)。但是由于静态方法不是可存根的,最终它们是一种不好的做法,不是吗?所以我必须在静态方法的使用便利性和可测试性之间做出选择。有什么妥协吗?

【问题讨论】:

    标签: c# static-methods instance-methods


    【解决方案1】:

    这取决于静态方法的作用。

    它真的必须是可存根的吗?像数据访问,长时间运行的操作等,还是你的意思是像.ToSlug()这样的辅助方法?

    如果是前一种情况,我会让它们成为实例方法以提高可测试性/测试速度。

    如果是后者,我会让它们保持静态并验证它们的正确性。

    【讨论】:

    【解决方案2】:

    如果您可以保证静态方法总是为给定的输入返回相同的结果,并且它们存在的唯一原因是辅助方法(转换或转换输入 -> 没有副作用的输出),我认为没有问题。对于额外的踢球,您可以使它们成为扩展方法(从 c#3.0 开始)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多