IT>С чего бы? Я хочу настроить зависимости — я открываю один-два-три файла, а не с десяток и путешествую по ссылкам.
Это и есть IoC, Inversion of Control, вместо того, чтобы контролировать зависимости из source of truth (места, где зависимости возникают), приходится создавать новый "source of truth" (граф зависимостей, частенько на другом языке, скажем, XML вместо Java), и уже от него плясать.
Более удобным подходом было бы уметь генерировать граф зависимостей путем непосредственного анализа исходного кода. Однако там есть свои грабли, например, как понимать такую зависимость:
if (random(100) < 50) then add_dependency_on(AnotherComponent)
Утрировано, но смысл понятен — этакая "зависимость шредингера". Которая попросту не может быть надежно разрешена нигде, кроме конкретного экземпляра рантайма. И не надо говорить, что это редкий случай — это везде и всюду, просто чаще пишется так:
if (getenv("SOME_ENV_VARIABLE") == "true") { add_dependency(Something); }
И если такой код не содержит автотестов для всех вариантов этой самой SOME_ENV_VARIABLE, то все, попробуй угадай, что там будет происходить в реальной системе. Особенно если код addDependency сложный — например, скачивает Chromium и собирает его на локальной машине.