c# - 在 Visual Studio 中,有没有办法按用途对私有(private)方法进行排序?

标签 c# visual-studio refactoring

在 Visual Studio 中,无论有没有扩展,是否有一种方法可以根据使用顺序(它们在调用堆栈中的位置)自动对类中的私有(private)方法进行排序?

例如考虑以下类:

public class MyClass
{
    public void MyMethod()
    {
        TestC();
    }

    private void TestA()
    {
        TestB();
    }

    private void TestB()
    {
        Console.WriteLine("Hello");
    }

    private void TestC()
    {
        TestA();
    }
}

这个类中的公共(public)方法是MyMethod , 它调用 TestC这叫TestA这叫TestB .我想(自动)按此顺序对这些方法进行排序,以便该类看起来像这样:

public class MyClass
{
    public void MyMethod()
    {
        TestC();
    }

    private void TestC()
    {
        TestA();
    }

    private void TestA()
    {
        TestB();
    }

    private void TestB()
    {
        Console.WriteLine("Hello");
    }
}

我需要能够选择一个类,请求这样的方法排序,并自动对方法进行排序。即,我不想手动对这些方法进行排序。

我知道有一些细微差别。例如,可能有一个私有(private)方法被调用堆栈中两个不同级别的两个方法调用。我想在这种情况下,考虑与公共(public)方法的最小(调用堆栈)距离是有意义的。

更新:

以这种方式对方法进行排序的想法来自 Robert C. Martin 的 Clean Code 一书。在第3章中,定义了Stepdown规则,即高级函数出现在低级函数之前。

在谷歌上快速搜索降压规则,我在以下位置找到了一个 netbeans 插件:http://plugins.netbeans.org/plugin/58863/stepdownruleplugin

我猜它做的事情与我需要的类似,但针对的是 netbeans。

最佳答案

ReSharper 插件“Greenkeeper”完成这项工作:

https://bitbucket.org/denniskniep/greenkeeper

插件可以对“newspapermode”中的方法进行排序:重要代码在前,细节在后。报纸模式与“降压规则”具有相同的行为。

https://bitbucket.org/denniskniep/greenkeeper/wiki/SortingDeclarations

关于c# - 在 Visual Studio 中,有没有办法按用途对私有(private)方法进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40323715/

相关文章:

c# - 有没有办法将 appsettings 转换为 env. ASP.NET Core 应用程序中的变量?

c# - Ninject 和 ASP.NET Identity 2.0

c# - 需要帮助理解 Microsoft 对 File.ReadLines 和 File.ReadAllLines 的解释

asp.net - 在 Visual Studio 中使用 CSS 的好方法

visual-studio - ReSharper 中是否有引用计数?

c# - 通用字符串到枚举的转换

visual-studio - MonoDevelop 中的 Stetic

python - 在python函数中使用inner function让逻辑清晰好不好?

java - 标记为弃用的第三方类

sql - 重构SQL