如果类方法不依赖于类的状态,那么它可以是静态的。在这种情况下,使这些方法保持静态是好的还是坏的做法?
(标记为C#,但可能适用于许多OO语言,其中方法必须是类成员。)
答案 0 :(得分:4)
Visual Studio Code Analysis和ReSharper建议将这些方法设为静态,因为它具有很小的性能优势:
来自MSDN:
不访问实例数据或调用实例方法的成员可以标记为static(在Visual Basic中为Shared)。将方法标记为静态后,编译器将向这些成员发出非虚拟调用站点。发出非虚拟调用站点将阻止在运行时检查每个调用,以确保当前对象指针为非null。这可以为性能敏感的代码实现可测量的性能增益。在某些情况下,无法访问当前对象实例表示正确性问题。
对于非“性能敏感”代码,这是一个品味问题。如果我没有充分理由不遵守ReSharper的建议,我会亲自服从。
答案 1 :(得分:1)
在这种情况下使这些方法保持静态是好的还是坏的做法 案件?
老实说,没有办法说100%这是好事还是坏事。许多人遵循一般规则,如果它可以是静态的,那么这样做。它表明对状态没有要求,技术上(至少在C#中)它要快一点。
话虽这么说,但这完全取决于方法的代码组成,以及应用程序将如何发展。