我将创建现有自动化 C++ 重构工具的比较表,并探索创建此类工具的能力,免费和开源。
我的问题是:您在日常工作中真正使用了哪些重构?有一些明显的事情,比如重命名变量/类/方法,但是 C++ 有没有一些特定的东西,比如处理模板、STL、复制构造函数、初始化程序等等?
我有兴趣为 C++ 开发人员在其编码中每天面临的所有小问题构建逼真的图片,并且至少在理论上可以自动化。我正在和我的同事交谈,但这可能还不够。
提前致谢。
我将创建现有自动化 C++ 重构工具的比较表,并探索创建此类工具的能力,免费和开源。
我的问题是:您在日常工作中真正使用了哪些重构?有一些明显的事情,比如重命名变量/类/方法,但是 C++ 有没有一些特定的东西,比如处理模板、STL、复制构造函数、初始化程序等等?
我有兴趣为 C++ 开发人员在其编码中每天面临的所有小问题构建逼真的图片,并且至少在理论上可以自动化。我正在和我的同事交谈,但这可能还不够。
提前致谢。
从答案中可以清楚地看出,很少有 C++ 程序员见过真正的重构工具。是的,它们非常少见,并且对于您使用的 IDE 来说是高度特定的。这是不可避免的,否则没有好的方法可以找出哪些源代码文件为最终的可执行文件贡献了代码。预处理器使其更具挑战性,您需要知道宏值。需要源代码解析器,但还不够。
VS 的 Visual Assist 是我所知道的。
看看 Martin Fowler 的重构:改进现有代码的设计和重构到模式,作者 Joshua Kerievsky。这些反过来又参考了 GoF设计模式书,所以也得到了。
如果您可以超越基本的重命名功能和提取功能,那么您可能会成为赢家。
这是我昨天提出的一个 C++ 设计模式:抛弃继承,支持策略。
正如你所说,有明显的事情:
请注意,尽管它是基本的,但很少得到很好的处理。我的主要抱怨是评论通常没有更新(我不是在谈论 doxygen 自动生成的无用混乱)。因此,如果我在头文件中描述类的使用,或者在另一个源文件中使用此类的理由,那么注释现在已过时,因为通过重命名类,现在没有人会知道它指的是什么......
然而,还有更有趣的案例:
祝你好运...
我希望支持的一种重构实际上是注入方法。或多或少与提取方法相反。
因为也许我发现我可以重新排列生成的代码,以提高清晰度或效果;但我不知道目前有对此的工具支持。
嗨,我使用http://www.devexpress.com/Products/Visual_Studio_Add-in/RefactorCPP/这个工具我重命名变量/类/方法,更改函数体,初始化程序