你在实践中使用了什么C++重构?

izh*_*hak 5 c++ refactoring automated-refactoring

我将创建现有自动化C++重构工具的比较表,并探索创建此类工具(自由和开源)的能力.

我的问题是:你在日常工作中真正使用了哪些重构?有一些显而易见的事情,比如重命名变量/类/方法,但是有没有特定于C++的东西,比如处理模板,STL,复制构造函数,初始化器等等?

我有兴趣构建C++开发人员每天在编码中面临的所有小问题的真实画面,并且至少在理论上可以实现自动化.我和同事说话但这可能还不够.

提前致谢.

Mat*_* M. 1

正如你所说,有一些显而易见的事情:

  • 重命名是其中之一
  • 更改函数签名是另一回事(特别是因为函数几乎必然是重复的:标头中的声明和源代码中的实现)
  • 重命名/移动文件(更新包含指令)

请注意,虽然它很基本,但很少得到很好的处理。我的主要抱怨是评论通常不会更新(我不是在谈论 doxygen 自动生成的无用的混乱)。因此,如果我在标头中描述该类的使用,或者在另一个源文件中使用该类的理由,那么该注释现在已过时,因为通过重命名该类,现在没有人会知道它指的是什么......

然而,还有更有趣的案例:

  • 更改函数签名时,您需要更新所有调用站点,开发人员将需要帮助来本地化它们
  • 通过继承,能够对层次结构的所有类进行操作:(再次)更改函数签名或添加/删除虚拟覆盖。
  • 使用模板:概念提案已被删除,如果您可以综合所传递类型的要求(必要的方法/内部类型),以便在更改这些要求(通过修改模板定义)时收到列表通知,那就太好了此模板正在使用且不再符合它的类(并且应更新)。请注意,如果只是重命名类型/方法,您可能希望自动传播更改,只要它不破坏其他任何内容。

祝你好运...