ИИ любит рефакторить код просто ради рефакторинга

Решил провести опыт: дал ИИ небольшой Go-код и попросил его отрефакторить. Задачка протая, проверить число на степень двойки. Порядок действий следущий: исходник скидиваю в chatgpt, результат отдаю в deepseek с просьбой от рефакторить. И так 5 раз Исходник: package main import "fmt" func main() { fmt.Println(isPowerOfTwo(4)) } func isPowerOfTwo(n int) bool { return n > 0 && n&(n-1) == 0 } И тут началось интересное. ИИ предложил добавить набор тестовых значений: testCases := []int{1, 2, 4, 8, 16, 3, 6, 12, 0, -4} Потом объяснил, зачем нужен Printf. Потом добавил комментарий в стиле GoDoc. Потом предложил убрать testCases, потому что переменная используется только один раз. Потом снова объяснил, почему testCases лучше убрать. Потом вернул GoDoc-комментарий. Потом сообщил, что код уже "практически оптимален". А потом ещё несколько раз подтвердил, что рефакторить больше нечего. То есть фактически ИИ несколько итераций рефакторил уже отрефакторенный код, который изначально был нормальным. И вот здесь, на мой взгляд, есть важный момент для новичков. ИИ очень хорошо умеет генерировать правдоподобные объяснения. Если он пишет: "Это улучшает читаемость" или "Это соответствует идиоматичному Go" или "Так код становится более поддерживаемым" — это ещё не означает, что изменение действительно необходимо. В данном случае исходная функция: func isPowerOfTwo(n int) bool { return n > 0 && n&(n-1) == 0 } уже является коротким и стандартным решением. Не нужно добавлять пять уровней абстракции. Не нужно создавать функцию printResults. Не нужно тащить тестовые данные в отдельную структуру. И уж точно не нужно менять код просто потому, что ИИ попросили "отрефакторить". Что я бы посоветовал новичкам Используйте ИИ не как авторитет, а как напарника по ревью. Не: "Отрефактори мой код." А: "Найди реальные проблемы в этом коде. Если проблем нет — так и скажи. Не предлагай изменения ради изменений." И обязательно задавайте следующий вопрос: "А зачем это изменение? Какую конкретную проблему оно решает?" Если ответа нет — возможно, менять ничего не надо. ИИ может очень убедительно объяснить, почему нужно переставить две строки местами. Но хороший разработчик должен уметь сказать: "Нет. Работает, читается, поддерживается. Оставляем как есть." И это, пожалуй, один из важных навыков, который новичку стоит развивать вместе с использованием ИИ.