D 重构类型、函数和变量名称的工具?
例如,您认为D 重构类型、函数和变量名称的工具?,d,D,例如,您认为get是一个非常糟糕的名称选择,但您已经在许多不同的文件中使用过它,手动更改任何出现的名称都是非常烦人的 您也不能真正进行全局替换,因为其他类型也可能有一个名为get的方法 D是否有任何东西可以帮助重构类型、函数、变量等的名称?一些有限的重构支持可以在主要的IDE插件(如Mono-D或VisualD)中找到。我记得Brian Schott曾计划通过添加对的依赖来为他的工具添加类似的功能,但似乎还没有实现 然而,并不是说所有这些选择目前确实具有非常有限的稳健性。这是因为在D中,计算任何
get
是一个非常糟糕的名称选择,但您已经在许多不同的文件中使用过它,手动更改任何出现的名称都是非常烦人的
您也不能真正进行全局替换,因为其他类型也可能有一个名为get
的方法
D是否有任何东西可以帮助重构类型、函数、变量等的名称?一些有限的重构支持可以在主要的IDE插件(如Mono-D或VisualD)中找到。我记得Brian Schott曾计划通过添加对的依赖来为他的工具添加类似的功能,但似乎还没有实现 然而,并不是说所有这些选择目前确实具有非常有限的稳健性。这是因为在D中,计算任何给定符号的完全限定名是一项非常复杂的任务,需要100%正确地进行完整的语义分析。考虑本地导入、模板、函数重载、混合以及它们如何影响识别符号
从长远来看,在引用D编译器前端成为一个库之前,我们肯定需要等待,以便以干净可靠的方式实现这种重构工具。一些有限的重构支持可以在主要的IDE插件(如Mono-D或VisualD)中找到。我记得Brian Schott曾计划通过添加对的依赖来为他的工具添加类似的功能,但似乎还没有实现 然而,并不是说所有这些选择目前确实具有非常有限的稳健性。这是因为在D中,计算任何给定符号的完全限定名是一项非常复杂的任务,需要100%正确地进行完整的语义分析。考虑本地导入、模板、函数重载、混合以及它们如何影响识别符号 从长远来看,在引用D编译器前端成为一个库之前,我们肯定需要等待,以便以干净、真正可靠的方式实现这种重构工具。我是这样做的:
- 有一种情况是,如果还有另一个同名函数可能仍在编译,那么这种情况就不会发生。如果单独进行此更改,则永远不会发生这种情况,因为没有它,就无法编译不明确的名称
@disable
添加到要重命名的对象@禁用并重命名定义。再次重新编译以确保没有像子类那样遗漏任何内容(编译器随后会抱怨“method foo未重写任何函数”,因此它们也会很突出
- 有一种情况是,如果有另一个同名的函数仍然可以编译,那么这种情况就不会发生。如果单独进行此更改,那么这种情况就永远不会发生,因为如果没有它,模棱两可的名称将无法编译
@disable
添加到要重命名的对象@dis
struct Foo{
Bar get(){
}
}
auto f = Foo();
f.get();