зависимости между источником и компонентом времени выполнения ошибки - PullRequest
2 голосов
/ 18 октября 2011

У меня раздражающая проблема зависимости между компонентами, и я хотел бы услышать несколько способов ее решения.

В основном у меня есть 3 компонента, которые почти ациклически зависят друг от друга, за исключением небольшой зависимости между первым и последним компонентом. Конкретно, это JIT-компилятор, но, надеюсь, это широко распространенный тип абстрактной зависимости, который может возникнуть в других обстоятельствах.

Component dependency diagram

Компоненты в основном находятся в последовательности зависимости от потока; генерация источника / AST, генерация кода и время выполнения. Как видно из диаграммы, ошибки, генерируемые во время выполнения, должны иметь возможность сообщать идентификаторы, которые могут быть соотнесены с элементами местоположения источника. Сложность в том, что этот идентификатор не обязательно является целочисленным типом (хотя это может быть). До сих пор SourceItemID был типом, внутренним для компонента Source, но теперь кажется, что его нужно определить вне его.

Каковы были бы оптимальные модели для использования здесь? Я думал, может быть, шаблонизируя тип ошибки времени выполнения с желаемым идентификатором местоположения источника.

1 Ответ

1 голос
/ 18 октября 2011

Самое простое решение - определить все типы и общее поведение, которые используются вашими модулями в независимом блоке (возможно, в одном заголовке), который используют все реальные процессорные блоки.

Для минимальных накладных расходов / головной боли и проблем совместимости (эти общие типы могут быть полезны в других местах для связи с другими приложениями / плагинами / чем угодно), попробуйте сохранить POD этих типов, если можете.

«Шаблонизировать» вещи нетривиально. Он очень мощный и выразительный, но если вы смотрите на удаление зависимостей, мое мнение таково: попробуйте посмотреть, сможете ли вы сначала сделать вещи на 1005 * проще .

...