«Баги нельзя найти, читая код». Одна строка про ревью расколола экспертов
Марк Джейсон Доминус заявил: главная цель код-ревью — найти код, который будет тяжело поддерживать, а не искать баги, потому что «в общем случае найти баги, разглядывая код, невозможно». А потом тред обнаружил, что никто не согласен даже в том, зачем ревью вообще нужно.
Формулировка оказалась слишком резкой, и автор зашёл в тред её сузить: как математик он имел в виду, что нельзя найти все баги или какой-то конкретный баг, а не то, что баги не находятся вовсе.
Сооснователь WebAssembly не купился и на смягчённую версию, назвав тезис «самооправданием ленивого ревьюера». А ветеран с 90 тысячами кармы сформулировал главную находку: единой цели у ревью нет — все думали, что делают это по одним причинам, а на деле нет.
Тезис в одну строку — и отступление
Марк Джейсон Доминус (mjd), математик и программист, выложил намеренно острое утверждение: главная цель код-ревью в том, чтобы найти код, который будет тяжело поддерживать, а не искать баги. Обоснование было ещё резче: «в общем случае найти баги, разглядывая код, невозможно». Плюс замечание про несимметричную вину за охоту на баги: выложись до изнеможения, найди три бага — и тебя всё равно упрекнут за пропущенный четвёртый. (Mathstodon для этого выпуска не отрендерился; процитированные строки читатели воспроизвели дословно.)
Поскольку фраза бьёт сильнее задуманного, автор пришёл в тред очертить границы:
«Автор — математик, поэтому, когда он говорит «в общем случае найти баги, разглядывая код, невозможно», он не имеет в виду, что найти баги совсем нельзя. Он лишь про то, что нельзя найти все баги или хотя бы какой-то конкретный баг.» — Марк Джейсон Доминус, автор поста
Само разногласие и стало открытием
Суженный тезис не устроил самого острого критика:
«Это лишь делает и ревьюеров, и авторов ленивее. Цель код-ревью многогранна. Тяжело поддерживать? Да. Могут быть баги? Да… Эта небрежная заметка — по большей части ещё одно самооправдание ленивого ревьюера.» — сооснователь WebAssembly и бывший ведущий компилятора V8
Тот, кто занимается ревью профессионально, отверг саму посылку:
«в настоящих ревью ревьюеры постоянно находят баги и ошибки. Ревьюер приносит свой прошлый опыт, замечает незамеченное взаимодействие, придумывает граничный случай, о котором автор не подумал.» — комментатор с высокой кармой, спорящий из практики ревью
А затем комментарий, который переосмыслил весь спор, назвав причину, по которой все говорили мимо друг друга:
«нет никакой единой цели код-ревью, которую можно обсуждать. Оказывается, пока все мы думали, что делаем это по одним причинам, на деле — нет. И это реально так. У нас разные цели, у нас разная методология.» — ветеран-комментатор с кармой около 92 тысяч
Вот что скрывал заголовок. Спор был не про баги против поддерживаемости, а про то, как за два десятилетия инженеры осознали: ритуал, который они выполняют каждый день, значит для каждого из них разное. А разногласия о том, как ревьюить, растут из невысказанного разногласия о том, зачем.
Получайте такие разборы каждый день
Главные истории Hacker News — на email, в Telegram или RSS.
GitHub добавил китайскую open-модель в Copilot. А тред обсуждал, как бежит от подорожания
Появление Kimi K2.7 Code в GitHub Copilot — настоящая веха: китайскую open-weight модель теперь можно запускать у доверенного провайдера. Но комментарии превратились в референдум о июньском подорожании Copilot и о клиентах, которых оно выгнало.