我将创建现有自动化C ++重构工具的比较表,并探索创建此类工具(免费和开源)的能力。
我的问题是:你在日常工作中使用了哪些重构?有一些显而易见的事情,比如重命名变量/类/方法,但是有没有特定于C ++的东西,比如处理模板,STL,复制构造函数,初始化器等等?
我有兴趣构建C ++开发人员每天在编码中面临的所有小问题的真实画面,并且至少在理论上可以实现自动化。我和同事们谈话但这可能还不够。
提前致谢。
答案 0 :(得分:2)
从答案可以清楚地看出,很少有C ++程序员见过真正的重构工具。是的,它们非常罕见,并且非常适合您使用的IDE。这是不可避免的,否则没有好的方法可以找出哪些源代码文件为最终的可执行文件贡献代码。预处理器使其更具挑战性,您需要知道宏值。需要源代码解析器,但还不够。
VS的Visual Assist是我所知道的。
答案 1 :(得分:1)
看看Joshua Kerievsky的Martin Fowler的Refactoring: Improving the Design of Existing Code和Refactoring to Patterns。这些反过来引用了GoF Design Patterns书,所以也可以这样做。
如果你能超越基本的重命名功能和提取功能,那么你可能会成为胜利者。
答案 2 :(得分:1)
这是我昨天提出的C ++设计模式: Ditch继承支持策略。
答案 3 :(得分:1)
正如你所说,有明显的事情:
请注意,虽然这是基本的,但它很少得到妥善处理。我的主要抱怨是评论通常不会更新(我不是在谈论doxygen自动生成的无用杂乱)。因此,如果我在头文件中描述类的使用,或者在另一个源文件中使用此类的理由,那么注释现在已经过时了,因为通过重命名类,现在没有人会知道它所引用的内容......
然而,有更多有趣的案例:
答案 4 :(得分:1)
我希望支持的一个重构实际上是 inject 方法。或多或少与 extract 方法相反。
因为我可能会看到我可以重新排列生成的代码以获得更好的清晰度或效果;但我不知道目前有这方面的工具支持。
答案 5 :(得分:0)
我使用http://www.devexpress.com/Products/Visual_Studio_Add-in/RefactorCPP/使用此工具我重命名变量/类/方法,更改函数体,初始值设定项