Build 如果可执行文件依赖于另一个依赖项已经使用的库,这是一种不好的做法吗?
我当前的项目有两个库Build 如果可执行文件依赖于另一个依赖项已经使用的库,这是一种不好的做法吗?,build,shared-libraries,static-libraries,Build,Shared Libraries,Static Libraries,我当前的项目有两个库libAAA和libBBB。 前者,libAAA,包含我的项目的基本数学和机制(例如国际象棋规则)。后者,libBBB,依赖于libAAA,但添加了GUI元素(例如单个图形的绘制方式) 可执行文件取决于,libAAA和libBBB。例如,libBBB用于设置国际象棋游戏,而libBBB用于定义其外观(控制台、qt、gtk等) 有这样的冗余依赖关系是可以的,还是可能是不好的做法 编辑: 我这样问是因为我喜欢将GUI表示与机制解耦是多么容易。例如,如果我想更改外观或工具包,我可以
libAAA
和libBBB
。
前者,libAAA
,包含我的项目的基本数学和机制(例如国际象棋规则)。后者,libBBB
,依赖于libAAA
,但添加了GUI元素(例如单个图形的绘制方式)
可执行文件取决于,libAAA
和libBBB
。例如,libBBB
用于设置国际象棋游戏,而libBBB
用于定义其外观(控制台、qt、gtk等)
有这样的冗余依赖关系是可以的,还是可能是不好的做法
编辑:
我这样问是因为我喜欢将GUI表示与机制解耦是多么容易。例如,如果我想更改外观或工具包,我可以添加libHHH
,创建另一个可执行文件,就这样。这很好
让我们看看一些替代方案:
libAAA
拉入libBBB
:如果libAAA
不打算在其他上下文中使用,并且它们各自的大小允许以实用的方式进行此操作,则这是正常的。但是,在许多情况下,例如,如果libBBB
大得多,并且libAAA
是许多项目的一个小型可重用库,独立于libBBB
中使用的UI框架,这将不起作用libBBB使用的代码直接复制到其中
:请不要。这意味着两个独立的库做了很多相同的事情,将来有两个地方需要更新,将来会给你或任何试图理解它的人带来更多的困惑,等等libBBB
代码引入应用程序本身:这并不总是可行或实用的,具体取决于您的开发堆栈和环境。出于性能或其他原因,许多应用程序可能还需要使用不同语言编程和编译的库libBBB
替换为另一个同样使用libAAA
(或另一个库,如果需要的话)的UI库,而无需删除任何核心应用程序代码或使依赖项中的任何其他代码无效