我真的很喜欢使用静态方法(尤其是对于助手类)。但是由于静态方法不是可存根的,最终它们是一种不好的做法,不是吗?所以我必须在静态方法的使用便利性和可测试性之间做出选择。有没有妥协?
问问题
814 次
2 回答
9
这取决于静态方法的作用。
它真的必须是可存根的吗?像数据访问,长时间运行的操作等,还是你的意思是像.ToSlug()这样的辅助方法?
如果是前一种情况,我会让它们成为实例方法以提高测试的可测试性/速度。
如果是后者,我会让它们保持静态并验证它们的正确性。
于 2010-06-06T10:21:51.953 回答
2
如果您可以保证静态方法总是为给定的输入返回相同的结果,并且它们存在的唯一原因是辅助方法(转换或转换输入-> 没有副作用的输出),我认为没有问题。对于额外的踢球,您可以使它们成为扩展方法(从 c#3.0 开始)。
于 2010-06-06T10:25:13.073 回答