Код-ревью — одно из важных средств обеспечения качества кода, но во многих 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 (редактор) не хватает людей, заинтересованных в тыканииздесьУзнайте подробности га.