Код-ревью — одно из важных средств обеспечения качества кода, но во многих R&D-командах оно часто не используется по разным причинам. Почему это так? В этой статье мы надеемся использовать очень простую точку зрения, чтобы понять это явление и, соответственно, дать некоторые идеи по оптимизации.
Вид
Наше мнение можно выразить одним предложением, т.Код-ревью очень сложно выполнить одновременно три условия: высокий охват, сильную привязку и низкие накладные расходы.. Что означают эти три условия?
- высокий охват, а это значит, что проверка должна охватывать практически все коммиты в проекте, а не просто просматривать код новичков или исправлять летние домашние задания вроде случайных «выборочных проверок».
- сильная связующая сила, а значит, исходя из обеспечения качества самого обзора, проблемы, указанные в обзоре, нужно эффективно решать, в противном случае не следует сливать код или выпускать официальную версию.
- низкие накладные расходы, что означает, что обзоры не должны занимать слишком много ценного времени разработки и не должны вызывать недоумение, как некоторые встречи.
аргумент
Проверка кода, отвечающая трем вышеуказанным условиям, не должна отвергаться каждым разработчиком, стремящимся к качеству кода. Но почему мы считаем, что такой обзор невозможен? Просто соедините вышеуказанные условия, и найти противоречия не составит труда.
- удовлетворить обоихвысокий охвата такжесильная связующая силаВремя проверки не поддается контролю: студенты, которые внесли нетривиальный код в некоторые проекты с открытым исходным кодом, которые подчеркивают качество кода, должны знать, что даже простое исправление, его PR может отклоняться от метода реализации и понимания сопровождающего. Открытое состояние в течение длительного времени (широко известное как несовместимое), не говоря уже о новых функциях и API.
- удовлетворить обоихвысокий охвата такженизкие накладные расходыОбзор легко превратить в формальность: если в системе указано, что все коды должны быть проверены, а продвижение версии нельзя затягивать, то пока времени немного мало, обзор станет ежедневным ответом LGTM. (Выгляди хорошо для меня).
- удовлетворить обоихсильная связующая силаа такженизкие накладные расходыТрудно охватить всю кодовую базу: обычно в выпуске есть несколько совершенно новых функций. Если рецензенты не участвуют в разработке новой функции, то полностью просмотреть тысячи строк кода для новой функции примерно так же сложно, как открыть проект с открытым исходным кодом, который вы не читали, и сразу указать в нем на ошибки. .
компромисс
Если выше, три не могут иметь оба, как мы должны сбалансировать это? В нынешней среде, быстрый итерационный характер большинства программных проектов и нашего желания «выйти с работы рано»низкие накладные расходыЭто условие часто трудно пожертвовать. затем впокрытиеа такжесвязующая силаКак выбрать между? Вернемся к теме «что делает код-ревью». Мы знаем, что проверка кода может:
- Уменьшить ловушки в коде
- Улучшение качества кода для рецензентов
- Ознакомьте членов команды с кодом
Если сам обзор бесполезен, то вышеперечисленные преимущества, естественно, просто пустая болтовня. Поэтому нам пока трудно сдатьсясвязующая силатребования. Итак, как улучшить это времяпокрытиеэта проблема?这里给出两点不成熟的想法供参考。
Во-первых, нас может вдохновить опыт команды Google Subversion: они рассматривают проверку кода как часть команды, наряду с обменом мгновенными сообщениями, собраниями и документацией.способ общения, а не процесс. Таким образом, методы коммуникации могут учиться друг у друга, чтобы повысить эффективность команды. Фактически,Проблема «нечитаемости» при просмотре новых функций может быть облегчена документацией на этапе проектирования.: Документация и рецензирование — это тоже общение «один ко многим», и очевидно, что обсуждать решение в документе проще, чем обсуждать детали напрямую. Совершенно новая функция, разработка которой занимает около 2 недель.问题定义 → 基本思路 → 实现概述 → 改进优化
Длина документа, написанного структурированным образом, должна составлять всего около тысячи слов. Время, необходимое для написания документа, не должно быть в том же порядке, что и время разработки. Это также может сэкономить время, чтобы сообщить об этой функции другим учащимся. лицом к лицу, когда документ отсутствует (конечно, также требуется документация для требований, с которыми можно легко справиться, что немного громоздко).
Кроме того,Проблема охвата проверки кода также может быть оптимизирована с помощью определенных соглашений о представлении.. переведено авторомconventional-commitsВ спецификации к каждому коммиту можно получить доступ через файл видаfix
/ feat
/ chore
/ refactor
Различные типы коммитов можно различать, чтобы получить детализированную удобочитаемую историю коммитов. Итак, при гранулярности обзора запроса на включение / запроса на слияние, почему спецификация не может применяться одинаково? Если так различать виды PR, то тут простор для фантазии:
- Ресурсы обзора могут быть сначала сосредоточены на
refactor
а такжеperf
На PR-обзоре. - для
feat
Существует большое количество новых кодовых PR, просто предоставляют документ, который гарантирует, что члены команды понимают, что нужно только для обеспечения приемлемой схеме, гарантированного неявным соглашением стиля кода, именования, пути и т. Д. - Мы можем выборочно игнорировать подпрограммы, которых может быть много на этапе тестирования.
fix
Аналогичен PR, но дополнен после выхода версииhotfix
Пиар-подобный, все еще нуждается в проверке. - без ущерба для качества кода
chore
а такжеdoc
Пиар-подобный обзор можно игнорировать.
В заключение, проверка кода — это форма общения, которая, как мы надеемся, станет частью ежедневной «культуры» команды разработчиков, а не жестким процессом, ограничивающим эффективность. Я надеюсь, что идеи этой статьи будут полезны студентам, которые также обеспокоены обзором :)
P.S. В нашей базовой команде Xiamen front-end tool (редактор) не хватает людей, заинтересованных в тыканииздесьУзнайте подробности га.