Декораторы хороши на своем месте и определенно их не следует избегать - когда это уместно ;-). Я вижу, что ваш вопрос по сути означает "ОК, поэтому, когда являются они подходящими"?
Хорошим примером является добавление некоторого префиксного и / или постфиксного кода для некоторых, но не для всех методов некоторых классов. Если бы это были все методы, декоратор class для обертывания всех методов был бы лучше, чем бесконечное повторение @thisonetoo
;-). Если это когда-то в голубой луне, то не стоит рефакторинга для оберток (декораторов или иным образом). В середине есть большая площадка, где декораторы действительно подходят.
Это сводится к одному из золотых правил программирования - СУХОЙ, чтобы не повторяться. Когда вы видите, что ваш код становится повторяющимся, вы должны реорганизовать повторение - и декораторы являются отличным инструментом для этого, хотя они далеко не единственные (вспомогательные методы и функции, пользовательские метаклассы, генераторы и другие итераторы, менеджеры контекста). ... многие функций, которые мы добавили в Python за последние несколько лет, лучше всего рассматривать как DRY-помощники, более простые и плавные способы устранения той или иной частой формы повторения!).
Если нет повторения, нет реального вызова для рефакторинга, следовательно (в частности) нет реальной необходимости в декораторах - в таких случаях YAGNI (Y'An't Gonna Need It) может превзойти DRY; -).