C ++模块架构,模块循环依赖项

时间:2019-03-19 10:09:28

标签: c++ qt design-patterns module architecture

在工作中,我们有一个基于Qt5的软件C ++项目。目前,我们的项目有7个模块。每个角色都有各自的角色。

我们当前的问题在于2个特定的模块:

  • 网络
  • 设备

网络模块完成所有联网,创建套接字,接收数据等操作。 “设备”模块很好,它描述了可以连接到该程序的所有设备及其方法和操作方法。

我们无法弄清彼此依赖的最佳方法,因为我们需要有所有设备的动态列表。这些设备通过网络模块捕获的特定协议添加到此列表中。我的同事说网络模块应该列出所有设备,但是我说网络模块在那里没有业务。因此,目前我们有依赖于设备的网络模块和依赖于网络的设备模块。 我的想法如下:

  1. 创建一个新模块,该模块包装了整个协议,并让Network模块仅在具有回调列表的情况下控制底层网络,可以添加这些回调以将所述设备添加到Device模块的列表中

  2. 将所有内容整合到一个完整的模块中,而不必再进行头脑风暴,最终会有大量无法管理或测试的代码。

在这里,我需要一些具体的建议来解决该问题,这是长期且持久的,以便尽可能轻松地维护和测试代码,并尽可能地减轻压力。

1 个答案:

答案 0 :(得分:2)

添加额外的层,每个层都有一定的责任通常是一个好主意。

只要您能够确定一个清晰,可分离的任务来提供一个干净的界面,然后为其创建一个新的层/类/模块/组件。

对于您而言,隔离设备管理器似乎是一个好主意。

考虑创建更多模块。一个模块的低级联网(根本没有设备的东西)。一模块式设备管理(无网络)。也许第三个模块包含与设备相关的网络代码(作为设备管理和网络之间的中间层)?在不了解有关您的项目的更多细节的情况下很难说。

模块往往太大,太复杂。我很少见到过小的模块。