我正在设计一个数学软件,其算法适用于通用整数类型,例如机器整数或 GMP 整数。对于性能,通常希望使用机器整数,但如果出现溢出,则可能需要尝试切换到 GMP;理想情况下在运行时。到目前为止,整个程序都是作为整数类型的模板编写的。随着图书馆的发展,痛苦也在增加:
- 编译时间和内存消耗正在失控。
- 编译时的错误消息不太有用。
- 调试更痛苦。
- 整个代码在头文件中。
我可以想到以下解决方案。重构代码以依赖于通过编译时宏定义的固定类型。然后制作该库的多个副本,每个整数类型一个,并将它们链接到可执行文件中。缺点似乎是我需要库本身的接口。
简短的问题是:对于几乎整个程序都依赖于一种类型的情况,设计模式是什么?