2010-06-06 91 views
1

我真的很喜欢使用静态方法(特别是对于helpers类)。但是,由于静态方法不可能存在,最终它们是一种不好的做法,不是吗?所以我必须在静态方法的使用方便性和可测试性之间进行选择。有没有妥协?静态或不静态

回答

9

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

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

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

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

+1

同意。顺便提一下这个问题。 例如,您可能还想阅读: http://stackoverflow.com/questions/731763/should-c-methods-that-c​​an-be-static-be-static http://stackoverflow.com/questions/1184701 /静态-VS-非静态方法 – SirLenz0rlot 2010-06-06 10:26:45

2

如果您可以保证静态方法总是返回给定输入的相同结果,并且它们存在的唯一原因是帮助方法(转换或转换输入 - >没有sideeffects的输出),我没有看到问题。对于额外的踢,你可以让他们的扩展方法(从C#3.0)。