История изменений
Исправление no-such-file, (текущая версия) :
В случае с app, вызов которого можно запихать куда угодно и как угодно
За это, как уже сказали, отрывают руки и этими руками бьют по роже. Всё должно быть в конструкторе. Кроме того, независимо от DI, свойства класса должны иметь доки с аннотациями типа, а сам класс доки с @uses
.
Если ты хочешь возразить, что тут приходится полагаться на аккуратность программиста и что на это полагаться нельзя, то можешь сразу подумать о том, а что кроме аккуратности мешает указать 100500 ненужных параметров в конструкторе? Или что мешает указать более широкую зависимость, чем нужно? Да хотя бы указать параметром весь контейнер, и использовать его также как app()?
Компоненты проекта становится сильно связанными
Сильно — это сильно сказано, когда общая внешняя зависимость только одна. Зато она явная.
Убедил
Пока нет. Использование параметров конструктора для DI имеет свои большие минусы. Например у тебя есть класс и 100 подклассов. Если тебе нужно добавить зависимость, то вместо того, чтобы просто в базовом классе в конструкторе дописать одну строчку, придётся в каждом из 100 классов править сигнатуру конструктора. Такая себе абстракция.
Исходная версия no-such-file, :
В случае с app, вызов которого можно запихать куда угодно и как угодно
За это, как уже сказали, отрывают руки и этими руками бьют по роже. Всё должно быть в конструкторе. Кроме того, независимо от DI, свойства класса должны иметь доки с аннотациями типа, а сам класс доки с @uses
.
Если ты хочешь возразить, что тут приходится полагаться на аккуратность программиста и что на это полагаться нельзя, то можешь сразу подумать о том, а что кроме аккуратности мешает указать 100500 ненужных параметров в конструкторе? Или что мешает указать более широкую зависимость, чем нужно? Да хотя бы указать параметром весь контейнер, и использовать его также как app()?
Компоненты проекта становится сильно связанными
Сильно — это сильно сказано, когда общая внешняя зависимость только одна. Зато она явная.