Нет, это не нормально. Нормально выносить в трейты какой-то bootstrap код, или прокси-код для реализации композиции методов, но именно реализацию классов - не ок.
Вот пример, у вас есть жирный класс для управления сообщениями, профилем и т.д. Разделяете это на отдельные классы, один для управления только сообщениями, другой - только для профиля. Инджектите их в общий класс менеджер, и прописываете все интерфейсы (то есть к классам еще и интерфейсы нужно написать, в IDE можно просто выделить интерфейс класса и сохранить отдельно). В этом случае, нормально выносить методы в трейты, так как они просто проксируют вызовы в инстанс своего класса.
Весь остальной код завязываете только на интерфейсы тех частей, что им нужны. Скажем какому-то классу не нужен менеджер профилей, ему только менеджер сообщений нужно. В этом случае можно только его инджектить.