Для осмысления архитектурной гибкости я бы посоветовал прочитать цикл статей от Fabien Potencier, автора Symfony.
Там же написано что лучше использовать, я уже перешел на эти рекомендации, ничего по сути не изменилось кроме читабельности улучшенной в коде.
там еще добавили много подсказок по Clean Code, и форматированию кода, например методы больше 10 строк подсвечиваются, и можно быстро отформатировать код под заданный шаблон, если вы пишете в команде, в которой принят стиль отличный от вашего.