Все гениальное – просто.
Не помню, кто именно так сказал, но это действительно так. Суть:
Я разрабатываю одну очень интересную систему, там есть 2 типа эммм… проектов – технология, и собственно сам проект. Технология описывает базовые отношения между составными частями проекта. Затем, при создании нового проекта, технология копируется в него и де-факто мы имеем шаблон проекта с заданными заранее зависимостями. Так вот, при копировании все ок, зависимости соблюдены. Но, тут возникает вопрос, что делать, если создается что-то новое, или создается что-то по образу уже находящейся в производстве вещи? А если это цепочка вещей, а если внутри цепочки перекрестные зависимости от множества других цепочек?
Немного графики:
Вопрос: как соотнести автоматически зависимости между объектами на уровне цепочек?
Думали, спорили аж с пятницы. Даже матом ругались. Было несколько версий:
- Создавать цепочки пообъектно, из кирпичиков-объектов, каждому вручную указывать зависимости – это долго, муторно и сложно
- Создавать цепочки по технологии, но технология не хранит данных о зависимости конкретных объектов в проекте!
- Создавать цепочки по технологии и указывать в какой цепочке искать объекты для зависимости. А если объектов много, если у каждого перекрестные зависимости, а что будет зависеть от самой цепочки, а что, если какой-то объект в уже существующих цепочках удалили и его вообще нет – куча исключений
- Создавать цепочки и объекты по технологии, однако что, если все зависимости уже удовлетворены – будет куча хлама и неиспользуемых объектов
- Создавать пустые цепочки и потом все заполнять уже на этапе разработки цепочек – ужаснах, это как-то некошерно