struct Foo{
Bar get(){
}
}
auto f = Foo();
f.get();
例如,您决定get
对于名称来说是一个很差的选择,但您已经在许多不同的文件中使用过它,并且手动更改偶发事件非常烦人。重构类型,函数和变量名称的工具?
也不能真正使全局替换,因为其他类型也可能有一个名为get
方法。
有什么为d,以帮助类型,函数,变量等重构的名字呢?
struct Foo{
Bar get(){
}
}
auto f = Foo();
f.get();
例如,您决定get
对于名称来说是一个很差的选择,但您已经在许多不同的文件中使用过它,并且手动更改偶发事件非常烦人。重构类型,函数和变量名称的工具?
也不能真正使全局替换,因为其他类型也可能有一个名为get
方法。
有什么为d,以帮助类型,函数,变量等重构的名字呢?
这里是我如何做到这一点:
这是半手动的,但我觉得它很容易,而且它很快,因为编译器的错误信息会带给你正确的权利如果你需要,大多数编辑人员可以很好地阅读这些错误信息,以便将你转移到正确的线上,然后告诉它再次重复最后的替换是一件简单的事情。 (在我的vim设置与我的热键,我打F4为下一个错误信息,然后点了重复上次改变,直到它完成。即使有一百个使用功能可在几分钟可靠*改变。)
您可以编写一个脚本,通过在编译器的输出中查找“:Error:”,提取文件/行号,并在其中运行纯文本替换,自动处理90%的案例。如果单词只在字符串文字中出现一次,您可以自动替换它,如果不是,请用户手动处理剩下的10%的案例。
但我觉得用我的编辑器热键很容易,我从来没有费心尝试编写它。
在这种情况下,你很可能做一个三步编译器辅助的变化:
@disable
添加到您要重命名的内容。@disable
并重命名该定义。再次重新编译,以确保没有任何错过子类(编译器会抱怨“方法foo没有覆盖任何函数”,所以它们也是正确的。所以是的,它不是完全自动化的,但只是改变它,并具有编译器错误帮助找到剩下的就是对我不够好。
也许[Visual D](http://rainers.github.io/visuald/visuald/StartPage.html)可以提供帮助。 – sigod
如果我没记错的话,使用D语言插件的MonoDevelop可以做一些像这样的基本重构。 – Kozzi11
@sigod可能应该说我在linux上。 –