C 模块体系结构,模块循环依赖性
C++ Module architecture, Module circular dependency
在工作中,我们有一个基于QT5的软件C 项目。目前,我们的项目有7个模块。每个都有一个单独的角色。
我们当前的问题在于两个特定模块:
- 网络
- 设备
网络模块可以完成所有网络,创建插座,接收数据等。设备模块很好,对所有可以连接到该程序的设备的描述及其操纵它们的方法和方法。
我们无法确定的是彼此依赖关系的最佳行动方案,因为我们需要具有所有设备的动态列表。这些设备通过特定制作的协议添加到此列表中,即网络模块捕获。我的同事说,网络模块应该列出所有设备,但我说网络模块在那里没有业务。因此,目前,我们取决于设备和设备模块,具体取决于网络模块。我的想法如下:
-
创建一个新的模块,该模块结束了整个协议,并让网络模块仅在具有回调列表的同时控制低级网络,可以添加以将上述设备添加到设备模块中的列表中。
-
使所有模块中的所有内容都在整个模块中进行,而忘记了头脑风暴,最终得到了一个巨大的代码,无法管理,也无法很好地测试。
我在这里需要一些具体的建议来解决解决方案,这是长期且持久的,以尽可能轻松地维护和测试代码。
添加其他层,每种责任通常都是一个好主意。
只要您确定一个提供干净接口的清晰,可分开的任务,然后为其创建一个新的图层/类/模块/组件。
在您的情况下,隔离设备管理器似乎是一个很好的主意。
考虑创建更多模块。一个模块低级网络(根本没有设备的东西)。一个模块设备管理(无网络)。也许第三个模块包含设备相关的网络代码(作为设备管理和网络之间的中间层)?不知道您的项目的更多细节,很难说。
模块往往太大且太复杂。我很少见到太小的模块。
相关文章:
- 尝试导入pybind-opencv模块时出现libgtk错误
- 为什么当我解模块化时,这个C++代代码"效率较低"?
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 内联如何影响模块接口中的成员函数
- C++返回 Numpy 数组的 Python 扩展模块
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 如何从线程中的不同模块调用函数?
- 如何使用 soong 命名空间来有条件地编译模块
- asn1c 不会从 asn.1 模块中提取八位字节字符串的默认值
- CMake - 模块 + 库混淆
- 特征 LLT 模块给出不正确的结果?
- 枚举进程模块在有效句柄上返回无效句柄
- 在 python 模块中导入子模块时PyImport_Import失败
- 将 PCL 链接到 Cython C++ 模块
- 即使直接从官方示例中复制,也找不到未知类型名称QML_ELEMENT和 QML 模块
- 电源功能模块化操作
- 如何告诉本机节点模块所需的dll存储在哪里?
- 如何为模块化应用程序实现C++插件系统
- C++ Python 模块在 Blender 中崩溃,但在 Python 控制台中不会崩溃
- C 模块体系结构,模块循环依赖性