LINUX.ORG.RU

История изменений

Исправление no-such-file, (текущая версия) :

В случае с app, вызов которого можно запихать куда угодно и как угодно

За это, как уже сказали, отрывают руки и этими руками бьют по роже. Всё должно быть в конструкторе. Кроме того, независимо от DI, свойства класса должны иметь доки с аннотациями типа, а сам класс доки с @uses.

Если ты хочешь возразить, что тут приходится полагаться на аккуратность программиста и что на это полагаться нельзя, то можешь сразу подумать о том, а что кроме аккуратности мешает указать 100500 ненужных параметров в конструкторе? Или что мешает указать более широкую зависимость, чем нужно? Да хотя бы указать параметром весь контейнер, и использовать его также как app()?

Компоненты проекта становится сильно связанными

Сильно — это сильно сказано, когда общая внешняя зависимость только одна. Зато она явная.

Убедил

Пока нет. Использование параметров конструктора для DI имеет свои большие минусы. Например у тебя есть класс и 100 подклассов. Если тебе нужно добавить зависимость, то вместо того, чтобы просто в базовом классе в конструкторе дописать одну строчку, придётся в каждом из 100 классов править сигнатуру конструктора. Такая себе абстракция.

Исходная версия no-such-file, :

В случае с app, вызов которого можно запихать куда угодно и как угодно

За это, как уже сказали, отрывают руки и этими руками бьют по роже. Всё должно быть в конструкторе. Кроме того, независимо от DI, свойства класса должны иметь доки с аннотациями типа, а сам класс доки с @uses.

Если ты хочешь возразить, что тут приходится полагаться на аккуратность программиста и что на это полагаться нельзя, то можешь сразу подумать о том, а что кроме аккуратности мешает указать 100500 ненужных параметров в конструкторе? Или что мешает указать более широкую зависимость, чем нужно? Да хотя бы указать параметром весь контейнер, и использовать его также как app()?

Компоненты проекта становится сильно связанными

Сильно — это сильно сказано, когда общая внешняя зависимость только одна. Зато она явная.