Pull to refresh

Comments 8

"Соблюдать иерархию: высшие уровни могут зависеть от низших, но не наоборот."
тут нет ошибки? мне казалось там как раз противоположное или я не правильно его понял...

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

Все же это не просто дело нейминга, т.к. от этого зависит то, куда мы будем добавлять интерфейс.
Интерфейс в DIP должен принадлежать модулю верхнего уровня. Если его добавить в модуль нижнего уровня, то инверсии зависимостей не будет.
Т.е. модуль верхнего уровня - это тот модуль, который в конечном счете использует/потребляет реализацию другого модуля.
Существует большое заблуждение что DIP - это про зависимость от абстракций.
Ключевое в этом принципе как раз первый пункт: "модули верхних уровней не должны зависеть от модулей нижних уровней", который непосредственно отражает само название "инверсия зависимостей".

Сами по себе абстракции ничего не инвертируют. Например, в связках (класс Родитель)<-(класс Потомок), (абстрактный класс Родитель)<-(класс Потомок), (интерфейс Родитель)<-(класс Потомок) все зависимости направлены в одном направлении.
Весь проект может быть построен на абстракциях, но при этом в нем не будет ни одной инверсии зависимостей, если интерфейсы находятся не в модулях верхнего уровня

по другому взглянула на эту тему , спасибо

Как то тоже создавал подобный функционал для инициализации и дальнейшей работы со своими проектами на flutter, т.к. проблема насущная)

Концепция была похожая - есть шаблонный проект и файл конфигурации в .yaml формате. Только помимо инициализации, можно работать ещё с уже существующим проектом.

Для уже существующего проекта можно задать определенную команду и она будет вставлять необходимый код как в уже существующие файлы в определенные места, так и создавать новые файлы/директории. Например, можно создать команду addEntity=Product и будут созданы директория product вместе с репозиториями и сервисами, детальная страница для Product, и вставлены соответствующие url в роуты(т.е. изменения в существующем файле)

Вот если что код этого функционала: https://github.com/koliane/koliane

Следующий шаг генерить проект сразу из UML?

из DSL на хаскеле

Sign up to leave a comment.