ReSharper喜欢在每个ASP中指出多个函数。NET页面,可以设置为静态。如果我把它们变成静态的,对我有帮助吗?我是否应该将它们设置为静态并将它们移动到实用程序类中?


当前回答

如果函数在许多页面中共享,你也可以把它们放在一个基页类中,然后让所有使用该功能的asp.net页面继承它(函数也可以仍然是静态的)。

其他回答

我希望您已经理解了静态方法和实例方法之间的区别。而且,答案可以有长有短。其他人已经给出了很长的答案。

我的简短回答是:是的,你可以像ReSharper建议的那样将它们转换为静态方法。这样做没有坏处。相反,通过将方法设置为静态,实际上是在保护该方法,这样就不会不必要地将任何实例成员插入该方法。通过这种方式,您可以实现OOP原则“最小化类和成员的可访问性”。

When ReSharper is suggesting that an instance method can be converted to a static one, it is actually telling you, "Why the .. this method is sitting in this class but it is not actually using any of its states?" So, it gives you food for thought. Then, it is you who can realize the need for moving that method to a static utility class or not. According to the SOLID principles, a class should have only one core responsibility. So, you can do a better cleanup of your classes in that way. Sometimes, you do need some helper methods even in your instance class. If that is the case, you may keep them within a #region helper.

您应该在给定的场景中使用最易读和最直观的方法。

除了在最极端的情况下,性能参数并不是一个好的参数,因为实际发生的唯一事情是将一个额外的参数(this)推入到实例方法的堆栈中。

在我看来,性能、名称空间污染等都是次要的。问问自己什么是合乎逻辑的。该方法在逻辑上操作类型的实例,还是与类型本身相关?如果是后者,则将其设置为静态方法。只有当它与不受您控制的类型相关时,才将其移动到实用程序类中。

Sometimes there are methods which logically act on an instance but don't happen to use any of the instance's state yet. For instance, if you were building a file system and you'd got the concept of a directory, but you hadn't implemented it yet, you could write a property returning the kind of the file system object, and it would always be just "file" - but it's logically related to the instance, and so should be an instance method. This is also important if you want to make the method virtual - your particular implementation may need no state, but derived classes might. (For instance, asking a collection whether or not it's read-only - you may not have implemented a read-only form of that collection yet, but it's clearly a property of the collection itself, not the type.)

它有助于控制名称空间污染。

在类中将方法标记为静态可以明显地表明它不使用任何实例成员,这有助于在浏览代码时了解这一点。

你不一定要把它移到另一个类中,除非它被另一个在概念上紧密关联的类所共享。