过度设计的 C++ 代码的案例研究

主要观点:

  • 展示了过度工程化的代码示例及如何改进,以检测文件格式的代码为例。
    关键信息:
  • 过度工程化的代码示例如[xbinary.h]、[xbmp.h]、[xbmp.cpp],用于从文件内容检测文件格式及提取文件属性。
  • 过度工程化的表现包括使用面向对象设计,创建基类和继承类,存在不必要的虚函数等。
  • 可通过将信息存储为类成员、移除获取器方法、合并函数等方式进行改进,如将多个虚函数替换为单个非虚函数,合并多个函数为一个等。
  • 还讨论了无需使用类,可将每个格式检测器实现为单个函数,以及将多个文件类型的检测函数简化为一个函数等。
    重要细节:
  • 在小型方面,如文件类型和模式通常与数据无关,可避免虚函数调用以节省代码大小和速度。
  • 在大型设计方面,可将多个获取信息的函数合并为一个,虽损失了某些使用方式,但简化了 API 和代码。
  • 过度工程化的原因是追求简单困难,受所学知识影响容易过度使用类继承和虚函数,跳出固有思维模式较难。
阅读 16
0 条评论