你会把这个方法设为静态吗?

时间:2012-04-02 22:49:03

标签: c# .net linq-to-sql static

在代码审查期间,我快速向团队提出了一种方法,我已经制定了静态方法,并且有人同意没有理由不静态,而且有人不同意说他不会让它静止,因为它不是是必要的,只是为了安全起见,以便将来进行修改和测试。

所以我做了很多研究,显然这是一个专门的案例,但我想知道在这种情况下你会做什么以及为什么?

(它基本上是一种帮助方法,我从一些不同的方法调用,一个非常低的流量页面。更多我的知识和静态学习。)

private IEnumerable<Category> GetCategoryByID(int id, Context context)
{
    var categoryQuery = from selectAllProc in context.SelectAll_sp()
                        where selectAllProc.CategoryID == id
                        select selectAllProc;
    return categoryQuery;
}

3 个答案:

答案 0 :(得分:5)

使私有方法静态是一种微优化的形式;方法调用稍微更快。但差异太小而无意义。

一般来说,你应该在以下方法中标记一个静态方法:

  1. 不以任何方式与实例成员进行交互,
  2. 您希望能够在不实例化类的情况下调用它,如Class.Method()
  3. 通常,像你的例子这样的方法会进入他们自己的static助手类,如果他们在不止一个地方使用的话。

答案 1 :(得分:1)

如果我是你,我会问自己以下问题。

Is it something which is related to type or instance of type?

如果答案是肯定的,我会稍微倾向于将其设为静态,使其不是静态的。

如果您可以提供更多信息,社区可以提出一些不错的选择。

答案 2 :(得分:0)

我想到的第一句话是,通过将此方法声明为静态并可能在代码中的多个位置使用它,您将引入一种 Service-locator 类型的依赖项。

据我所知,它的主要问题是引入了隐式依赖,即无法通过查看方法签名来推断它们。

因此,评估修改静态方法对系统其余部分的影响可能要困难得多。