Недавно я попросил ChatGPT улучшить метод JavaScript, который написал несколько лет назад. Ответ меня приятно удивил, и я решил поделиться некоторыми наблюдениями.

Во-первых, вот что произошло — он проанализировал код, составил список изменений, которые хотел внести, а затем предоставил мне окончательный результат со всеми изменениями вместе. Сумасшедший, верно?

Исходный запрос

Ответ

Примечательно, что он, по-видимому, понял мой синтаксис, собрал каждый ответ из Stack Overflow (и удалил часть шуток) и улучшил мой код.

Вот несколько наблюдений…

ChatGPT — фантастический рецензент кода

У меня отношения любви и ненависти к ревью кода. Они довольно сложные (когда не изменено 600 файлов), но они также могут быть трудоемкими. Когда я просматриваю код, я в первую очередь смотрю на то, как я могу его сломать и насколько легко будет выяснить, что пошло не так, когда он неизбежно сломается. Меня не волнует, использовали ли вы тернарные операторы или стрелочные функции; linting может справиться с этим.

ChatGPT может восполнить этот пробел.

Когда я попросил ChatGPT улучшить код, он это сделал, но сделал это с причинами, почему. Это так важно. В зависимости от состава команды, в большинстве обзоров кода старший разработчик проверяет код младшего разработчика. Хороший инженер объяснит, зачем вносить изменения, чтобы рецензируемый человек мог учиться и становиться лучше. Наличие инструмента, который инженер может использовать для получения немедленной обратной связи и обучения, прежде чем представить его другому инженеру, сэкономит всем время. Если OpenAI сможет решить проблемы безопасности данных, предоставив ChatGPT доступ к собственному коду, мы будем в деле.

ChatGPT может писать ваши модульные тесты

Я не знаю ни одного разработчика, который был бы в восторге от модульных тестов. Мы волнуемся, когда они обнаруживают ошибку или когда они все проходят, но писать их утомительно. Войдите в ChatGPT. Я скормил ему метод JavaScript и сказал: «Напишите мне модульные тесты». В течение нескольких секунд он выдает сценарии счастливого пути, нулевые проверки и неопределенные проверки — с правильными соглашениями об именах. То, что модульные тесты были написаны «автоматически», было достаточно удивительно, но тот факт, что они называли переменные на основе имени моего метода, был вишенкой на торте.

Я не думаю, что могу преувеличить, насколько это невероятно. Количество времени, которое я и мои разработчики тратим на написание модульных тестов, намного больше, чем я хотел бы разделить с бизнесом. Это добавленная стоимость, но это занимает много времени. Если бы мы могли использовать ChatGPT для обработки большей части наших модульных тестов и сэкономить энергию для более сложных сценариев — это изменило бы правила игры.

ChatGPT может столкнуться с регулярными выражениями (среди прочего), поэтому не спешите заменять свой код

Я попросил его улучшить метод, использующий регулярное выражение для форматирования заголовка. Я уже написал довольно много модульных тестов для этого метода и получил ожидаемый результат, поэтому я заменил свой метод на ChatGPT и запустил модульные тесты.

Они потерпели неудачу.

Здесь много всего и много причин, по которым он мог потерпеть неудачу, поэтому я даже не буду строить предположения, но урок здесь заключается в том, что вы не можете слепо доверять ChatGPT, чтобы начать замену больших кусков кода. Это плохо кончится.

Все это говорит о том, что использование ChatGPT в качестве инструмента может значительно улучшить жизнь разработчика. Это всего лишь выборка идей, и я уверен, что другие пробовали их, а также сотни других экспериментов. Спасибо за прочтение.