Yac*_*sad 26 c# refactoring visual-studio
在Visual Studio中,有或没有扩展,有没有办法根据用法的顺序(它们在调用堆栈中的位置)自动对类中的私有方法进行排序?
例如,考虑以下类:
public class MyClass
{
public void MyMethod()
{
TestC();
}
private void TestA()
{
TestB();
}
private void TestB()
{
Console.WriteLine("Hello");
}
private void TestC()
{
TestA();
}
}
Run Code Online (Sandbox Code Playgroud)
这个类中的公共方法是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");
}
}
Run Code Online (Sandbox Code Playgroud)
我需要能够选择一个类,请求这样的方法排序,并让方法自动排序.即,我不想手动对这些方法进行排序.
我知道有一些细微差别.例如,可能存在从两个方法调用的私有方法,这两个方法在调用堆栈中处于两个不同的级别.我想在这种情况下考虑与公共方法的最小(调用堆栈)距离是有意义的.
更新:
这种以这种方式对方法进行分类的想法来自Robert C. Martin的清洁代码书.在第3章中,定义了Stepdown规则,该规则讨论了在低级函数之前出现更高级别的函数.
在google上快速搜索stepdown规则,我发现了一个netbeans插件:http://plugins.netbeans.org/plugin/58863/stepdownruleplugin
我猜它会像我需要的那样,但对于netbeans.
Den*_*s K 11
ReSharper插件"Greenkeeper"完成了这项工作:
https://bitbucket.org/denniskniep/greenkeeper
该插件可以对"newspapermode"中的方法进行排序:首先是重要代码,在底部是详细信息.newspapermode具有与"Stepdown rule"相同的行为.
https://bitbucket.org/denniskniep/greenkeeper/wiki/SortingDeclarations
以下是没有人引用的其他产品可以通过友好的请求添加功能:
自己写这个并不难.VS2015设置中提供了新的Visual Studio VSIX项目模板,如果您无法在(文件>新建>项目... Visual C#>可扩展性)下找到它们,只需修改安装(cmd> appwiz.cpl> VS2015更改/修改).
好消息是CodeMaid项目是开源的,包含重新排序代码块所需的大部分代码和逻辑.
你需要的另一件事是调用堆栈,我们的一个有用的伙伴Stackoverflow'rs为此提供了代码:如何从Visual Studio外接程序中获取正在运行的进程的堆栈跟踪?
鉴于这是一个赏金,你可能期待一个完整的解决方案,抱歉,我没有时间为你编写代码,但如果你遇到任何问题我很乐意帮助你.请在评论中告诉我.
为了快速启动和运行,我个人只需复制此Visual Studio扩展中的代码,并通过调用堆栈重新排序替换内核:调试单线程.
| 归档时间: |
|
| 查看次数: |
1682 次 |
| 最近记录: |