C# 在VisualStudio中,是否有一种按用法对私有方法进行排序的方法?
在VisualStudio中,无论是否有扩展,是否有一种方法可以根据私有方法的使用顺序(它们在调用堆栈中的位置)自动对类中的私有方法进行排序C# 在VisualStudio中,是否有一种按用法对私有方法进行排序的方法?,c#,visual-studio,refactoring,C#,Visual Studio,Refactoring,在VisualStudio中,无论是否有扩展,是否有一种方法可以根据私有方法的使用顺序(它们在调用堆栈中的位置)自动对类中的私有方法进行排序 例如考虑以下类: public class MyClass { public void MyMethod() { TestC(); } private void TestA() { TestB(); } private void TestB() {
例如考虑以下类:
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的干净代码书。在第三章中,我们定义了逐步下降规则,即在低级函数之前出现高级函数
我在google上快速搜索了一条降压规则,在以下位置找到了一个netbeans插件:
我想它的功能与我所需要的类似,但是对于netbeans。我不知道是否可以在Visual Studio中以本机方式实现这一功能。然而,我认为最好的方法是使用ReSharper(一个visualstudio扩展)来实现这一点 它提供了至少两个想到的选项: 1) 将首选项与模式一起使用 2) 使用“文件结构”窗口(如果要重新排序的类没有太多方法,这可能是最快的方法)。你可以
希望能有所帮助。如果您想手动触发该逻辑并使用vs 2015,您可以创建一个使用Roslyn的visual studio代码修复程序。 见: 您应该执行的步骤包括:
public class MyClass
{
private string _HelloWorld;
public string HelloWorld
{
get {return _HelloWorld;}
set {_HelloWorld = value;}
}
public void MyMethod
{
TestC();
}
public void TestA()
{
TestB();
}
public void TestB()
{
Console.WriteLine(HelloWorld);
}
public void TestC()
{
TestA();
}
}
以下是没有人引用过的其他产品,它们可以通过友好请求添加功能:
Resharper声称能够以各种方式对方法进行排序。@RawN,我试图通过Resharper找到一种方法来实现这一点,但我找不到任何方法。我怀疑您是否能找到现成的方法。您当然可以使用roslyn()编写代码,它可以解析代码、确定调用层次结构等。@SimonMourier,我希望有人已经这样做了。@YacoubMassad请问您为什么要这样做?我真的不明白你的答案。你说你不知道有一个扩展可以做到这一点,但是你提供了一些选择。这些选项是做什么用的?很抱歉给你带来了困惑。我提到的选项是由ReSharper提供的,它是一个VisualStudio扩展。我为每个不同的选项提供了链接,允许您轻松更改文件中方法的顺序。其中一个选项使用“文件结构”窗口,按成员变量、属性和方法显示文件的结构。从那里,您可以使用鼠标按任意顺序拖放它们,您将在文件中看到新顺序的方法。我希望将这些方法作为重构选项自动排序(当然是按需排序),而不是手动排序。虽然这样做可行,但问题需要现有的解决方案(如果有的话)。我希望VisualStudio的一个生产力工具已经有了这个功能。按照我想要的方式对方法进行排序会带来一些可读性方面的好处。主要来说,你首先要了解高层次
public class MyClass2
{
private string _HelloWorld;
public void MyMethod
{
TestC();
}
public void TestC()
{
TestA();
}
public void TestA()
{
TestB();
}
public void TestB()
{
Console.WriteLine(HelloWorld);
}
public string HelloWorld
{
get {return _HelloWorld;}
set {_HelloWorld = value;}
}
}