Альтернатива использованию заглушек, чтобы избавиться от перекрестных ссылок - PullRequest
0 голосов
/ 08 сентября 2018

За 15 лет я создал свой собственный "фреймворк", который состоит из нескольких классов и модулей.

Например:

Strings (contains wrappers for string functions)
Conversions (contains wrappers for conversions)
IO (contains wrappers for IO operations)
Environment (contains Windows environment things9
Windows (deals with currently open windows on Windows)
OEM (contains OEM information for all of my apps)
License (contains things to license my software)
AlphaWindow (contains stuff to display an topmost alpha window)

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

Перекрестных ссылок почти нет.

Однако среди 500 функций есть еще 10 перекрестных ссылок, от которых я просто не могу избавиться.

Из-за этого, когда я создаю новый проект, я все еще вынужден добавить всю свою инфраструктуру.

Действительно ужасный способ решить эту проблему - использовать заглушки.

Например, мой класс "Strings" ссылается на "Conversions" 10 раз. Теперь, если один проект на самом деле не нуждается в «Conversions», но нуждается в «Strings», я иногда делаю класс-заглушку «Conversions» и добавляю заглушки для этих 10 функций, которые требует «Strings», чтобы мое приложение все еще компилировалось.

Есть ли лучше выглядящая альтернатива этим заглушкам?

Я не особо разбираюсь в C ++, но, полагаю, люди на C ++ довольно часто сталкиваются с этой проблемой.

Спасибо.

1 Ответ

0 голосов
/ 08 сентября 2018

У меня похожий случай. Что я делаю, так это включаю все классы в одну DLL. Если мне нужен какой-либо из методов, я включаю ссылку на DLL, нет никакого вреда при наличии ненужных методов.

Я использую разные пространства имен для каждого класса (например, MyFramework.Strings, MyFramework.Conversions). Таким образом, я могу добавить Imports операторы только для базовых классов, которые мне нужно использовать в данном классе.

...