我当前的项目有两个图书馆libAAA
和libBBB
。
前者libAAA
包含我项目的基本数学和力学(例如国际象棋的规则)。后者libBBB
取决于libAAA
,但添加了GUI元素(例如,如何绘制单个数字)。
可执行文件取决于libAAA
和libBBB
。例如。 libBBB
用于设置国际象棋游戏,而libBBB
用于定义它的外观(console,qt,gtk,...)。
是否可以拥有这样的冗余依赖项,或者它可能是不好的做法?
编辑:
我问这个因为我喜欢将GUI表示与机制分离是多么容易。例如。如果我想改变外观或工具包,我可以添加libHHH
,制作另一个可执行文件,然后就可以了。
答案 0 :(得分:1)
这很好。
让我们看一些替代方案:
将所有代码从libAAA
拉入libBBB
:如果libAAA
不打算用于其他情况和它们各自的尺寸允许以实际方式完成。但在许多情况下,例如如果libBBB
要大得多,libAAA
是一个小型可重用库,对于许多项目而言,与libBBB
中使用的用户界面框架无关,这不会起作用。
直接将libBBB
使用的代码复制到其中:请不要。这意味着两个独立的图书馆会做很多相同的事情,将来有两个地方需要更新,将来会让你更加困惑,或者是其他任何想要理解它的人,等等。
将libBBB
代码带入应用程序本身:这根本不可行或不切实际,具体取决于您的开发堆栈和环境。许多应用程序可能还需要为了性能或其他原因而使用不同语言编程和编译的库。
我可能错过了其他几个替代选项,但尽管冗余,但保留两个依赖关系对我来说似乎是最好的选择。
正如您在编辑中所述,这也允许您将libBBB
替换为另一个也使用libAAA
(或其他lib,如果需要)的UI库,而不会拆除任何核心应用程序代码或使依赖项中的任何其他代码无效。