Я таки на копилот слегка подсел и порой он меня приятно удивляет. Хочется поделиться. Если не возражаете, буду в эту тему скидывать примеры его дополнений, которые мне кажутся не вполне тривиальными и полезными.
// это былоcase 'int32':
log_args.push(expr_string + ':');
log_args.push(arg.value);
break;
case 'uint32':
log_args.push(expr_string + ':');
log_args.push(arg.value < 0 ? arg.value + 0x100000000 : arg.value);
break;
case 'int64':
log_args.push(expr_string + ':');
log_args.push(arg.value);
break;
// а это дополнилcase 'uint64':
log_args.push(expr_string + ':');
log_args.push(arg.value < 0 ? arg.value + 0x10000000000000000n : arg.value);
break;
Это именно тот пример, когда он сделал в общем-то скучную но необходимую работу и сберёг мне полминуты времени.
Здравствуйте, scf, Вы писали:
vsb>>Это именно тот пример, когда он сделал в общем-то скучную но необходимую работу и сберёг мне полминуты времени.
scf>Не напрягает за ним всё проверять? Вдруг он нолик забыл или плюс на минус заменил где-нибудь.
У меня для этого юнит-тест есть. Он их, кстати, тоже помогает писать)
if (expr_string === escaped_string) {
// if the expression is the same as the string, just print the string
log_args.push(string);
} else {
log_args.push(expr_string + ':');
log_args.push(escaped_string);
}
В этом коде он мне дополнил полностью текст комментария. Это вообще он классно делает, я комментарии не люблю формулировать, а он прям на английском пишет и почти всегда угадывает.
Здравствуйте, vsb, Вы писали:
vsb>Здравствуйте, scf, Вы писали:
scf>>Не напрягает за ним всё проверять? Вдруг он нолик забыл или плюс на минус заменил где-нибудь.
vsb>У меня для этого юнит-тест есть. Он их, кстати, тоже помогает писать)
Ошибся в коде, ошибся в тесте. Тест проходит — дело сделано
Здравствуйте, vsb, Вы писали:
vsb>Это именно тот пример, когда он сделал в общем-то скучную но необходимую работу и сберёг мне полминуты времени.
А не лучше было потратить 10 минут на рефакторинг и избавление от всей этой копипасты?
Когда понадобится что-то поправить, а не новое писать, то он же не подскажет внести одинаковые изменения везде?
vsb>> // if the expression is the same as the string, just print the string
vsb>>
vsb>>В этом коде он мне дополнил полностью текст комментария. Это вообще он классно делает,
P>А какова смысловая нагрузка этого комментария?
Избавить читателя от необходимости чтения кода. Я в последнее время внедряю концепцию, когда код дублируется в комментарии, если комментарий прочитать проще, чем понимать код. Я в курсе, что это противоречит общепринятой мудрости, что мол читать надо код, комментарий потом забудешь исправить и всё такое и раньше так же думал, но сейчас думаю по-другому.
Здравствуйте, karbofos42, Вы писали:
vsb>>Это именно тот пример, когда он сделал в общем-то скучную но необходимую работу и сберёг мне полминуты времени.
K>А не лучше было потратить 10 минут на рефакторинг и избавление от всей этой копипасты?
Тут лучше код не напишешь. Любой рефакторинг сделает его менее понятным.
K>Когда понадобится что-то поправить, а не новое писать, то он же не подскажет внести одинаковые изменения везде?
В принципе может подсказать. Но не самостоятельно, нужно поставить курсор в нужное место и попросить дополнить. В целом с редактированием кода в нем неудобно, да, концептуально он работает только как генератор нового кода.
Здравствуйте, vsb, Вы писали:
vsb>Избавить читателя от необходимости чтения кода. Я в последнее время внедряю концепцию, когда код дублируется в комментарии, если комментарий прочитать проще, чем понимать код. Я в курсе, что это противоречит общепринятой мудрости, что мол читать надо код, комментарий потом забудешь исправить и всё такое и раньше так же думал, но сейчас думаю по-другому.
Каким образом контролируется соответствие коментариев коду?
Здравствуйте, Doom100500, Вы писали:
vsb>>Тут лучше код не напишешь. Любой рефакторинг сделает его менее понятным.
D>Секундочку... но ведь задачи рефакторинга как раз обратные.
Рефакторинг это изменение кода без изменения его функционала. А какие там задачи стоят — это у каждого в голове уже свои тараканы. Я во многих случаях предпочитаю оставить немного повторяющегося кода, если это делает код проще для чтения и понимания, т.к. любые выносы этого кода в общие функции и тд неизбежно вызывают дополнительный уровень сложности, который где-то оправдан, а где-то не оправдан.
Здравствуйте, Doom100500, Вы писали:
vsb>>Избавить читателя от необходимости чтения кода. Я в последнее время внедряю концепцию, когда код дублируется в комментарии, если комментарий прочитать проще, чем понимать код. Я в курсе, что это противоречит общепринятой мудрости, что мол читать надо код, комментарий потом забудешь исправить и всё такое и раньше так же думал, но сейчас думаю по-другому.
D>Каким образом контролируется соответствие коментариев коду?
Методом пристального взгляда и code review.
Может и тут копилот когда-нибудь поможет, на самом деле почему бы и нет. Раз он генерирует комментарии, значит и проверять может. На самом деле я весьма воодушевлён будущим этой технологии. То, что сейчас, это прям вершина айсберга от того, какой потенциал она открывает.
Здравствуйте, vsb, Вы писали:
vsb>Избавить читателя от необходимости чтения кода. Я в последнее время внедряю концепцию, когда код дублируется в комментарии, если комментарий прочитать проще, чем понимать код.
Странно, ты прокомментировал совершенно понятный, даже для не-программиста, IF и совершенно не прокомментировал чуточку более "сложный" ELSE.
vsb>Я в курсе, что это противоречит общепринятой мудрости, что мол читать надо код, комментарий потом забудешь исправить и всё такое и раньше так же думал, но сейчас думаю по-другому.
Всегда думал, что комментировать надо какие сложные для понимания сходу блоки кода, а не отдельные простые строки кода.
Здравствуйте, paucity, Вы писали:
vsb>>Избавить читателя от необходимости чтения кода. Я в последнее время внедряю концепцию, когда код дублируется в комментарии, если комментарий прочитать проще, чем понимать код.
P>Странно, ты прокомментировал совершенно понятный, даже для не-программиста, IF и совершенно не прокомментировал чуточку более "сложный" ELSE.
Ну в else там идёт стандартная форма логгинга, что её комментировать. По сути когда ты пишешь DEBUG(x) то он напишет в лог x: 123. Но если ты напишешь DEBUG("preparing"), то он напишет не preparing: "preparing", а просто preparing. Предполагается, что если человек полез в этот код, то лог он хоть раз запускал и форму вида x: 123 видел, поэтому к этому коду вопросов возникнуть вроде как не должно. А зачем нужен этот if — ну мне не очевидно было бы сходу.
По-моему это не существенно. Я согласен, что возможно это слишком очевидный комментарий. Суть же не в том, насколько он очевидный, а в том, что ИИ смог распознать этот паттерн и сгенерировать этот комментарий.