我真的很喜欢使用静态方法(特别是对于helpers类)。但是由于静态方法不是顽固的,最终它们是一种不好的做法,不是吗?所以我必须在静态方法使用方便性和可测试性之间做出选择。有任何妥协吗?
答案 0 :(得分:9)
这取决于静态方法的作用。
它真的必须是可靠的吗?像数据访问,长时间运行操作等,或者你的意思是帮助方法,如.ToSlug()?
如果是前一种情况,我会使用实例方法来提高测试的可测性/速度。
如果是后者,我会让它们保持静止,只是验证它们的正确性。
答案 1 :(得分:2)
如果您可以保证静态方法总是返回给定输入的相同结果,并且唯一的原因是它们有辅助方法(转换或转换输入 - >输出没有副作用)我没有看到问题。对于额外的踢,你可以使它们成为扩展方法(从c#3.0开始)。