c++ - 源和错误运行时组件之间的依赖关系

标签 c++ architecture dependencies

我有一个恼人的组件之间的依赖问题,我想听听几种解决它的方法。

基本上我有 3 个组件几乎非循环地相互依赖,除了第一个和最后一个组件之间的小依赖。具体来说,这是一个 JIT 编译器,但希望它是一种广泛出现的抽象依赖类型,可能会在其他情况下发生。

Component dependency diagram

组件基本上是流依赖的顺序;源/AST 生成、代码生成和运行时。从图中可以清楚地看出,运行时生成的错误应该能够传达与源位置项相关的 ID。棘手的部分是这个 Id 不一定是整数类型(尽管它可以是)。到目前为止,SourceItemID 是 Source 组件内部的类型,但现在它似乎需要在它外部定义。

在这里使用什么是最佳模式?我在想也许可以使用所需的源位置 ID 模板化运行时错误类型。

最佳答案

最简单的解决方案是在所有实际处理单元都使用的独立单元(可能是单个 header )中定义模块使用的所有类型和常见行为。

为了最小化开销/麻烦和兼容性问题(这些共享类型在某些时候可能在其他地方有用,用于与其他应用程序/插件/其他任何东西进行通信),请尽可能保留这些类型的 POD。

“模板化”事物并非微不足道。它非常强大且富有表现力,但如果您正在考虑删除依赖项,我的意见是:首先尝试看看是否可以简化

关于c++ - 源和错误运行时组件之间的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7802695/

相关文章:

Java服务架构

.net - 如何在 .NET 中构建此客户端/服务器应用程序?

java - 如何检测 Scala 源代码中对 Java 类的依赖?

java - mvn依赖:analyze usage

qt - 是否可以在 qmake 中为 Makefile 添加依赖项?

c++ - fseek 写入值时回到文件末尾

c++ - AES_cbc_encrypt 是否添加填充?

c++ - 支持波兰语,无需使用 unicode 字符集进行编译

c++ - 预处理器字符串化宏不起作用

architecture - 代理与非代理消息系统的优缺点