c++ - 将一个包含很多类的文件转换为每个文件一个类的多个文件

标签 c++ refactoring

如何将一个包含很多类的文件转换为每个文件一个类的多个文件? (C\C++)

所以我有这样结构的文件:一些包含然后很多类有时会相互调用:

#include <wchar.h>
#include <stdlib.h>
//...
class PG_1 {
  //...
}
class PG_2 {
  //...
}
//......
class PG_N {
  //...
}

最佳答案

如果你没有使用版本控制(tsk tsk):

  1. 备份您的整个项目以防您搞砸。
  2. 将每个类剪切并粘贴到它自己的 classname.hclassname.cpp 文件中。将 classname 替换为类的名称。更新包含守卫。
  3. 添加您认为每个类的依赖项所必需的#include 指令。
  4. 删除multiclass.hmulticlass.cpp
  5. 将单类文件添加到您的项目或联编文件中。从您的项目或 makefile 中删除多类文件。
  6. 构建项目或 makefile。
  7. 如果构建失败,请修复问题(例如缺少 #include)并转到第 6 步。
  8. 构建完成后,运行您的测试。
  9. 如果测试失败,诊断并修复问题,然后转到第 6 步。

如果您使用的是支持文件级分支的修订控制系统(例如 Perforce,或者可能是 Subversion?),您应该注意保留修订历史,以便其他开发人员可以找到旧的更改:

  1. 在开发分支而不是主干中执行其余这些步骤。
  2. 对于multiclass.hmulticlass.cpp中的每个类名,整合multiclass.hmulticlass.cpp 到该类的单独 classname.hclassname.cpp 中。
  3. 提交包含所有这些集成的更改列表。这会生成原始文件的 N 个拷贝,并且它们都有指向原始文件的修订历史记录。
  4. 检查每个新文件以进行编辑。
  5. 从每个新文件中删除除该特定类所需的代码之外的所有内容,并更新包含防护。
  6. 添加您认为每个类的依赖项所必需的#include 指令。
  7. 检查旧的 multiclass.hmulticlass.cpp 以进行删除。
  8. 检查项目或 makefile 以进行编辑。
  9. 将单类文件添加到您的项目或联编文件中。从您的项目或 makefile 中删除多类文件。
  10. 构建项目或 makefile。
  11. 如果构建失败,请修复问题(例如缺少 #include)并转到第 10 步。
  12. 构建完成后,运行您的测试。
  13. 如果测试失败,诊断并修复问题,然后转到第 10 步。
  14. 提交包含所有修改的更改列表。

如果您使用的是不支持文件级分支的版本控制系统,那么这两种方法的某种组合应该会奏效。希望你明白了。

关于c++ - 将一个包含很多类的文件转换为每个文件一个类的多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2437783/

相关文章:

c++ - 与 pantheios 的链接问题 - 未定义的引用 pantheios_init

c++ - VertexBuffer 混合顶点

c# - 使用大型 switch 语句将数据分配给属性...是否有更动态的方法来执行此操作?

ruby-on-rails - 将rails if else语句重构为带有return的单行?

refactoring - 什么算法可以分析库裂变的调用依赖关系?

c++ - 通过指向实例的静态指针访问成员变量

c++ - C++中的set与map有什么区别?

ruby - 寻找完美平方算法的优化

c++ - 'Head First' 风格的数据结构和算法书?

c# - 您使用什么适用于 C# 的 ReSharper 4+ 实时模板?