Вы немножко путаете понятия. Организация кода и наследование - это разные вещи.
Наследование, безусловно, должно использоваться, там где оно необходимо, безотносительно того, как организован код.
Я в последнее время сколняюсь к подходу feature-first architecture. Это позволяет легко модифицировать разные участки кода несколькими разработчиками одновременно не мешая друг другу. Проблема при этом - правильно выделить, что является фичей. И зависимости между фичами нужно тщательно продумывать, кто от кого зависит.