Сложно назвать список объективных характеристик хорошего кода. Таких характеристик мало, и у них есть ограничения в трактовке и применимости. Например Среди таких характеристик можно выделить цикломатическую сложность и количество зависимостей. Разные авторы используют разные слова, но можно заметить, что все делают упор на «читаемость». Есть исследования, которые пытались определить, что такое эта «читаемость». Однако их проблема в маленькой или искажённой выборке, поэтому делать выводы об универсальных правилах «хорошего» кода сложно. Я считаю, что коду нужен рефакторинг, если при чтении возникает одна из этих мыслей: Тяжело читать Тяжело менять Тяжело тестировать «Не помещается в голову» Запахи кода Часть описанных проблем умные люди уже оформили в виде запахов кода. Запахи — это антипаттерны, которые приводят к проблемам. Против запахов уже разработаны решения. Иногда нам достаточно посмотреть на код, найти в нём запах и применить конкретное решение против него.