Причин может быть много, от низкого уровня вас, как разработчика, до низкого уровня архитектуры приложения с которым вы работаете. Мне кажется что больше второе. Как минимум "магические свойства", код родительских классов... это уже нелохие сигналы. Конечно судить вне контекста тяжко без примеров.
Ну а так, хотите best practice - учите Symfony или Zend. На данный момент это самые двинутые на best-practice фреймворки. Ниже уровнем (то есть больше упор идет в RAD и простоту разработки) идут Laravel и другие. Читайте про TDD/BDD/DDD, рефакторинг, паттерны программирования (не обязательно с привязкой к PHP, можно под Java, суть будет та же), принципы SOLID... Вообще пожалуй в обратном порядке...
symfony.com/doc/current/quick_tour/the_big_picture.html
https://knpuniversity.com/ - очень хорошие курсы по PHP, Symfony и не только.
live.symfony.com/replay
Так же...
refactoring.guru - полезный проект по рефакторингу. Из него помимо того как рефакторить можно так же понять почему тот или иной код нужно рефакторить.
habrahabr.ru/post/208442 - читать с комментами.