【发布时间】:2017-03-12 10:42:34
【问题描述】:
在 Visual Studio 中,无论是否有扩展,有没有一种方法可以根据使用顺序(它们在调用堆栈中的位置)自动对类中的私有方法进行排序?
例如考虑以下类:
public class MyClass
{
public void MyMethod()
{
TestC();
}
private void TestA()
{
TestB();
}
private void TestB()
{
Console.WriteLine("Hello");
}
private void TestC()
{
TestA();
}
}
这个类中的公共方法是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");
}
}
我需要能够选择一个类,请求这样的方法排序,并让方法自动排序。即,我不想手动对这些方法进行排序。
我知道有一些细微差别。例如,可能有一个私有方法从调用堆栈中位于两个不同级别的两个方法调用。我想在这种情况下,考虑与公共方法的最小(调用堆栈)距离是有意义的。
更新:
以这种方式对方法进行排序的想法来自 Robert C. Martin 的 Clean Code book。在第 3 章中,定义了 Stepdown 规则,它讨论了让高级函数出现在低级函数之前。
在google上快速搜索降级规则,我发现了一个netbeans插件:http://plugins.netbeans.org/plugin/58863/stepdownruleplugin
我猜它的功能与我需要的类似,但适用于 netbeans。
【问题讨论】:
-
Resharper 声称能够以各种方式对方法进行排序。
-
@RawN,我试图通过 Resharper 找到一种方法,但我找不到任何方法。
-
我怀疑你会发现这个开箱即用。您当然可以使用 roslyn (github.com/dotnet/roslyn) 对其进行编码,它可以解析代码、确定调用层次结构等。
-
@SimonMourier,我希望有人已经这样做了。
-
@YacoubMassad 请问您为什么要这样做?只是好奇
标签: c# visual-studio refactoring