Обязательно прочтите и постарайтесь понять примечание к пул-реквесту, прежде чем просматривать сам код. Часто код, который решает еще не возникшие проблемы, не пригождается и становится лишним. Если автор решения выходит за рамки принятых стайл гайдов или отклоняется от них, стоит указать ему на это. В команде должен быть принят свод правил, по которым ведется разработка ПО. Он нужен для того, чтобы соблюдался единый стиль и было проще разобраться в контексте.
Это делает сложным для понимания, какой именно функционал изменился. Помните, что тесты — это тоже код, который нужно поддерживать. Не позволяйте тестам быть слишком сложными, просто потому, что они не входят в конечный релизный файл. Ревьюер несет ответственность за тот код, который он ревьюит. Он https://deveducation.com/ должен быть уверен, что кодовая база остается консистентной, поддерживаемой, и отвечает все другим принципам из «За чем необходимо следить в ревью». Всвязи с этим, «Руководство компании Google по проведению ревью» выглядит очень ценным документом, перевод первой части которого и представлен далее.
Переводы остальных частей выйдут позже отдельными постами. Стоит отметить, что это адаптированный перевод, не все переведено слово-в-слово, во имя более русских формулировок и предложений. В дополнение к базовым принципам хорошего код-ревью, в Яндексе мы придерживаемся ещё трёх правил. Некоторые моменты проще объяснить во время созвона или личной встречи.
Несколько десятков комментариев и пару дней к одному блоку кода — это неправильно. Лучше будет после первого комментария от ревьюера перейти в мессенджер или на личное общение и так обсудить спорный момент, в самом пулл реквесте отметить уже результат, к которому пришли. Во многих командах для автоматизированной проверки используются статические анализаторы кода — линтеры. Когда пунктуация и стиль кода проверяется автоматически, гораздо проще сфокусироваться на высокоуровневых вещах — насколько логично человек мыслит и насколько эффективные решения он принимает.
Если кода намного больше, просить автора разбить результат на несколько частей. В этой статье я хотел рассказать и показать плюсы проведения код ревью. Будучи старшим разработчиком я всегда за то, чтобы мой код проходил code evaluate. Лично для меня это отличный способ “увидеть” свой код чужими глазами. Не говоря уже о том, что для команд это недорогой и эффективный способ иметь кодовую базу, с которой можно будет эффективно работать. Может быть задача исправить 1 строчку кода, а может быть задача отрефакторить весь проект.
Или ❌ для решений, которые вызывают вопросы или требуют внимания и проработки. Особенно актуально, если автор не совсем понимает что от него хочет ревьюер. Gitlab, github и bitbucket позволяют вставлять в комментарии разметку markdown.
Например, можно выяснить и четко определить, что значат approve, reject, комментарий к коду. Это важно, потому что разные разработчики могут придавать разные значения этим действиям. Для одних reject пулл реквеста может выглядеть чем-то страшным, говорящим о том, что разработчик не справился с задачей и следует полностью переписывать код. Для других — reject всего лишь какая-то ошибка, которую нужно поправить в коде и тогда он получит аппрув. О таких моментах и нужно договориться еще «на берегу», чтобы в дальнейшем не было недопонимания и обид.
В таком случае лучше закрыть мердж реквест, переписать код и открыть новый. Джуниор разработчики могут подсмотреть какие-то практики, методы, способы из кода сеньора. Вместо того, чтобы собирать их в переговорках и обучать – давайте читать новый код и задавать вопросы. Усталость, взгляд замылился, бабушка заболела, задачу неправильно понял – причин совершить ошибку может быть много. Коллеги со свежим взглядом помогут вовремя ошибку исправить. Шаринг знаний о проекте.Не только автор знает, что там пишется в другом проекте или части проекта, а все.
При обзоре чужого решения велик соблазн давать мелкие советы. Это называется эффектом велосипедного сарая (bikeshedding). Он создаётся, потому что для обсуждения сложных, глубоких вопросов нужно сильно погружаться в контекст внесённых изменений, а это трудно. Намного проще написать десяток комментариев о забытых точках с запятой и спокойно продолжить заниматься своей задачей. Код-ревью — это область, где особенно ярко проявляются софт-скиллы инженеров. Провести хорошее код-ревью сложнее, чем написать хороший код.
Таким образом, запрашивая пояснения, вы помогаете не только себе, но и вашим коллегам, которые столкнутся с этим кодом в дальнейшем. Если CL удаляет код, проверьте, что соответствующий раздел в документации также удален. Во многих командах Яндекса эта вещь ограничена программно — новый код нельзя влить, пока он не получит определённое количество аппрувов (одобрений) от коллег. Это правило позволяет использовать в работе только качественный код.
Во втором случае не отправляйте реквест в котором исправлены 500 файлов и 4000 изменений. Никто в здравом уме не сможет это нормально проверить, и желания такое проверять вы тоже не найдете. Способствует диалогу между автором кода и ревьюером, дает возможность прокачать навыки и узнать что-то новое.
Как мы видели, есть много причин, по которым вы хотите провести проверку кода, но, безусловно, вашим приоритетом является отладка и устранение всех проблем. Прежде чем приступить к просмотру кода, убедитесь, что у вас есть вся информация, необходимая для завершения процесса. Code Review может являться частью процесса выполнения задачи (частью workflow). Может показаться, что ревьювить должен только тимлид или старший разработчик, но хорошей практикой является если в процессе ревью задач участвуют все разработчики. Таким образом можно не только распределить нагрузку от ревью, но и составить у команды более широкое представление о выполняемых задачах. Также это помогает делиться best practices внутри команды.
Чек-лист поможет сделать ревью полезным, а коммуникацию — эффективной. Полезные фразы «Вот хороший пример, как была решена почти такая же задача.
На практике проверка 200–400 строк в течение 60–90 минут позволяет обнаружить от 70 до 90% проблем в коде. В первом раунде не стоит акцентировать внимание на мелких недочетах. Скорее всего, автор сам их обнаружит и поправит, и ревьюеру не придется тратить время на поиск незначительных проблем.
Процесс проверки кода — это возможность роста как для автора кода, так и для человека, которого попросили его проверить. Это также возможность улучшить качество вашего проекта. В этой статье о проверке кода мы также рассказали, как инструменты no-code могут ускорить разработку и творческий процесс, а также снизить затраты на программирование. Проверка кода — это акт сознательной проверки фрагментов кода на наличие ошибок и багов.
Есть тесты, которые только мешают, бесполезная документация и бессмысленный код ревью. Так вы сможете быть уверены, что кто-то другой выловит ошибки, которые вы не можете увидеть. «Решение не должно быть идеальным — оно должно соответствовать потребностям проекта и выполнять поставленную задачу», — резюмирует Антон Щербак. Между проверяющим и проверяемым нет «ступеньки опыта», которая помогает значительно улучшить код. Некоторые данные, такие как сгенерированный код или гигантская структура данных, можно читать по диагонали, но никогда не пролистывайте просто так код, написанный человеком.
Это робот, который отправляет автоматизированные приглашения людям посмотреть код коллег, когда наступает время код-ревью. Принцип их отправления простой — пишем определённую команду в интерфейсе гитхаба, робот проверяет, кто имеет максимальную экспертизу в таком виде кода и присылает приглашения этим людям. Получается, чем больше кода писать, тем больше нужно ревьюить. Чтобы сделать код-ревью полезным, всем участникам процесса нужно соблюдать несколько правил. Перед внедрением код-ревью ваша команда должна решить, как будет описывать задачи. Этот этап нужен, чтобы каждый участник понимал, что в рамках конкретной задачи необходимо реализовывать.
Code review помогает развиваться и быстрее влиться в команду, перед ним не должно быть страха, не должно быть негатива. Разработчикам может быть сложно принимать критику в адрес своего кода с одной стороны и легко уйти в критику чужого кода. Нужно следить, чтобы в команде не было таких крайностей. Коллеги не ставят перед собой цели обидеть автора кода. Задача код-ревью — оценить реализованное решение, найти ошибки или потенциальные проблемы. Если ревьюер нашёл какую-то проблему — это хорошо, ведь так она будет решена сразу и не повлияет на пользователей.
У этого также есть другие преимущества, такие как снижение затрат на разработку и обнаружение ошибок на ранних этапах процесса. Это также возможность учиться, делиться и совершенствовать свои навыки. Отправка изменений на код-ревью происходит через пулреквесты.
Комментарий к блоку кода должен быть понятен сам по себе, по возможности не допуская разночтения. Чтобы не превышать границы допустимой критики, ревьюер должен аргументировать каждый свой комментарий к чужому коду, уметь доказать свое мнение насчет реализации какой-либо задачи. Для этого ревьюер перед тем как приступать непосредственно к изучению кода, разобраться с условиями поставленной задачи и придумать вариант своего решения. Первый вариант короче и проще, но в нём есть недостаток. Ведь автор всё же лучше знает свой код — вероятно, применённое решение действительно лучше всего подходит для конкретной ситуации. В противном случае автор это поймёт и исправит проблему.
Если вам предстоит разобрать на код-ревью работу новичка, значит, нужно подойти к этому ещё ответственнее, чем обычно. От первой полученной обратной связи зависит, как человек будет работать в дальнейшем, а возможно, останется ли он вообще с вами. Чем ответственнее вы и ваши коллеги относятся к код-ревью, тем быстрее растут новички как профессионалы. Чаще всего код-ревьюер не акцептует изменения, пока есть открытые вопросы. Для навигации в этих вопросах лучше использовать условные обозначения. Например, добавить 👍, если комментарий согласован или не критичен.
В конце концов, программирование — это человеческая деятельность, и поэтому в нём могут быть ошибки Проверка кода может выполняться инструментами/программным обеспечением проверки кода и людьми. Когда разработчик-человек проводит проверку кода, важно, чтобы человек, сайт для проверки кода который проверяет и тестирует код, не был тем же человеком, который изначально написал код. Поэтому вас, как разработчика, могут попросить просмотреть коды, написанные вашими коллегами. Вот почему важно, чтобы вы знали, как работает процесс проверки кода.