使用库时的标准 - 使用库的数据类型 VS 创建我自己的类型?

Criteria when using libraries - use Library's data type VS create my own type?

我正在编写一个使用许多开源库的游戏,每个库都有自己的类型来表示 3D 矢量:-

即使那些库也很受欢迎且质量很高,但我不想过分依赖它们。

因此,我决定创建自己的类型 Vect3,并在它们之间创建转换器。

它非常适合我的需求,因为我的游戏逻辑想要操纵 Vector 3D。

特别是在 Vect3 与物理、渲染或矩阵操作完全无关的范围内。

问题

我正在编写一个 AI 模块,它大量使用 Eigen
对于原型,我经常使用 Eigen::MatrixXf
MatrixXf 是一个比 Vector3 复杂得多的结构。

我计划创建自己的 class MyMatrix 并重构 AI 以使用 MyMatrix 而不是 Eigen::MatrixXf

我怀疑这是否是一个好的决定。
换句话说,我是否应该为我看到和想要使用的所有东西创建我自己的数据类型?

问题

为一个或多个外部库中已存在的类型选择这些选项之一的标准是什么?
A. 类型应创建为新的 class.
B. 使用库类型(哪个?)。

我目前的标准

Robert C. Martin 在他的《清洁代码》一书中说: 包装第 3 方代码始终是一个好习惯。 Mike Finney 在他的 Blog 中引用了 Martin 的话并对其进行了总结:

  • The third party code can evolve

  • Your wrapper's interface can be made to precisely suit your application's needs

在你的情况下,我会自己编写 类 来包装向量和矩阵库 类。 另一个优点是您的代码只依赖于它真正需要的东西。