Ревью кода
Ревью пул-реквестов — распространённый вид вклада. Несмотря на то, что непрерывная интеграция (CI) гарантирует корректность работы кода, этого недостаточно. Есть аспекты вклада, которые нельзя автоматизировать: дизайн, структура и архитектура кода, качество тестов или опечатки. В следующих разделах рассмотрены различные аспекты процесса ревью кода.
Читаемость#
Код ясно выражает свою цель? Если приходится тратить много времени на то, чтобы понять, что делает код, реализацию нужно улучшить. Предложите разбить код на более мелкие абстракции, которые проще понимать. Как альтернатива и в крайнем случае можно добавить комментарий с объяснением логики. Спросите себя, сможете ли вы понять этот код в ближайшем будущем без дополнительного контекста, например описания пул-реквеста.
Небольшие пул-реквесты#
Большие пул-реквесты сложно ревьюить, и в них легче упустить детали. Если пул-реквест становится слишком большим и неуправляемым, предложите автору разбить его на части.
Есть немного сценариев, когда разбить пул-реквест невозможно, например, если изменения тесно связаны и их нельзя разделить. В таких случаях автор должен дать чёткое описание изменений и объяснить причины.
Согласованность#
Важно, чтобы изменения были согласованы с остальной частью проекта. Несогласованность усложняет поддержку, поэтому её следует избегать. Если в проекте уже есть подход к выводу сообщений пользователю или отчётам об ошибках, стоит придерживаться его. Если автор не согласен со стандартами проекта, предложите ему создать issue, где это можно обсудить подробнее.
Тесты#
Тесты позволяют менять код уверенно. Код в пул-реквестах должен быть покрыт тестами, и все тесты должны проходить. Хороший тест стабильно выдаёт один и тот же результат, его легко понимать и поддерживать. Рецензенты проводят большую часть времени ревью над кодом реализации, но тесты не менее важны, потому что это тоже код.
Несовместимые изменения#
Несовместимые изменения ухудшают пользовательский опыт для пользователей Tuist. Вклады должны избегать внедрения несовместимых изменений, если это не строго необходимо. Есть много возможностей языка, которые можно использовать для эволюции интерфейса Tuist без несовместимых изменений. Не всегда очевидно, является ли изменение несовместимым. Один из способов проверить это — запустить Tuist на проектах-примерах из директории fixtures. Нужно поставить себя на место пользователя и представить, как изменения повлияют на него.