代码之家  ›  专栏  ›  技术社区  ›  Crippeoblade

为什么VisualStudio中的extract method命令创建静态方法?

  •  19
  • Crippeoblade  · 技术社区  · 17 年前

    如果我正在重构一个非静态类,而该方法仅在该类中可见,为什么它是静态的?

    与非静态类中的非静态方法相比,在非静态类中调用私有静态方法是否有一些性能优势?

    仅仅表明方法不依赖于类的任何成员变量是为了可读性吗?

    2 回复  |  直到 17 年前
        1
  •  33
  •   Konrad Rudolph    17 年前

    为什么VisualStudio在重构代码并选择extract method时默认创建私有静态方法?

    只有当您的方法不访问任何成员变量/方法/属性时,它才会这样做。这是很好的,因为它基本上是基于最少假设的原则运行的:因为您不访问特定于实例的数据,所以最好使用该方法 static

    与非静态类中的非静态方法相比,在非静态类中调用私有静态方法是否有一些性能优势?

    理论上可能有,但我对此表示怀疑。但是,将该方法设置为静态可以清楚地表明它不会访问或修改实例数据,我发现这是一个有用的提示。

        2
  •  1
  •   Otávio Décio    17 年前

    创建静态方法可能被认为是一种性能增强,因为没有“this”指针作为变量传递。我使用ReSharper,每当方法不引用类变量时,它总是建议将方法转换为静态。