c# - 方法可以静态化,但应该吗?

标签 c# .net refactoring resharper static-methods

ReSharper 喜欢指出每个 ASP.NET 页面的多个函数可以静态化。如果我让它们静止,它对我有帮助吗?我应该将它们设为静态并将它们移至实用程序类吗?

最佳答案

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

有时有些方法在逻辑上作用于实例,但碰巧还没有使用实例的任何状态尚未。例如,如果你正在构建一个文件系统并且你有一个目录的概念,但你还没有实现它,你可以编写一个返回文件系统对象类型的属性,它总是只是"file"——但它在逻辑上与实例相关,因此应该是一个实例方法。如果您想使方法成为虚拟方法,这也很重要——您的特定实现可能不需要状态,但派生类可能需要。 (例如,询问集合是否为只读 - 您可能尚未实现该集合的只读形式,但它显然是集合本身的属性,而不是类型。)

关于c# - 方法可以静态化,但应该吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/169378/

相关文章:

c# - 从代码库中提取 API

c# - Win XP(x86) OS 但不是 Win 7(x64) 上的二级属性绑定(bind)异常

c# - 如何在 Web API 和 OData 中进行 PATCH

c# - 仅包含接口(interface)的 WinRT 组件 DLL?

c# - 如何使用 ASP.NET MVC 返回动态 CSS?

c# - 是否可以返回异常?

javascript - 重构确定数字是否以十、百、千等为单位的基本代码

c++ - 是否有用于 Emacs C++ 编程的重构工具?

c# - 用 `new()` 约束类型参数是什么意思?

c# - 计算字典中 int 值的总数