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