gpt4 book ai didi

c++ - 如何最好地从模板困惑切换到干净的类架构 (C++)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:04:26 25 4
gpt4 key购买 nike

假设一个大型模板库包含大约 100 个文件,其中包含大约 100 个模板,总共超过 200,000 行代码。一些模板使用多重继承来使库本身的使用变得相当简单(即从一些基本模板继承并且只需要实现某些业务规则)。

所有存在的(经过数年发展的)“有效”并用于项目。

但是,使用该库编译项目会消耗越来越多的时间,并且需要相当长的时间来定位某些错误的来源。修复通常会导致意想不到的副作用或相当困难,因为一些相互依赖的模板需要更改。由于函数数量庞大,几乎不可能进行测试。

现在,我真的很想简化架构以使用更少的模板和更专业的小类。

有没有行之有效的方法来完成这项任务?从哪里开始比较好?

最佳答案

我不确定我是否明白模板是如何/为什么会出现问题,以及为什么普通的非模板化类会有所改进。这难道不意味着甚至更多 类、更少的类型安全性以及更大的错误可能性吗?

我可以理解简化架构、重构和删除各种类和模板之间的依赖关系,但自动假设“更少的模板会使架构更好”是有缺陷的 imo。

我想说的是,模板可能允许您构建比没有它们时更简洁的架构。仅仅是因为您可以使单独的类完全独立。如果没有模板,调用另一个类的类函数必须事先知道该类或其继承的接口(interface)。使用模板,这种耦合就没有必要了。

删除模板只会导致更多依赖性,而不是更少。添加的模板类型安全性可用于在编译时检测大量错误(为此目的,在代码中大量使用 static_assert)

当然,在某些情况下,增加的编译时间可能是避免使用模板的正当理由,如果您只有一群习惯于用“传统”OOP 术语思考的 Java 程序员,模板可能会使他们感到困惑,这可能是避免使用模板的另一个正当理由。

但从架构的角度来看,我认为避免模板是朝着错误方向迈出的一步。

重构应用程序,当然,这听起来很有必要。但是,不要仅仅因为应用程序的原始版本误用了用于生成可扩展和健壮代码的最有用的工具之一。特别是如果您已经担心代码量,删除模板很可能会导致更多行代码。

关于c++ - 如何最好地从模板困惑切换到干净的类架构 (C++)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/324043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com