golang

Зачем нужен код-ревью?

  • пятница, 26 июля 2024 г. в 00:00:06
https://habr.com/ru/articles/831472/

Привет, Хабрюзеры.

Недавно я устроился на вакансию Golang junior разработчика в новую компанию. Ранее я несколько лет программировал на PHP, пока не познакомился с Go. Думал, что моя мечта сбылась: я набрался опыта, стал более опытным специалистом и теперь могу продолжать развиваться. Однако, после выполнения задачи код, написанный мной, нужно было отправить на код-ревью. После этого мне приходили правки, которые я должен был исправить и снова отправить на ревью. Раньше я не понимал, зачем нужен этот процесс. На форумах и в сообществах многие писали, что код работает — и слава Богу, так зачем нужны эти ревью?

Теперь, после некоторого времени работы, я хотел бы поделиться своим мнением о код-ревью и объяснить, почему этот процесс важен.

Что такое код-ревью и зачем оно нужно?

Код-ревью (code review) — это процесс проверки кода другим разработчиком, который не писал этот код. Код-ревьюер играет важную роль в процессе разработки программного обеспечения по нескольким причинам:

  1. Повышение качества кода: Код-ревью помогает выявить ошибки и недочеты, которые могли быть пропущены автором кода. Это включает баги, потенциальные проблемы с производительностью и нарушения стиля кодирования.

  2. Обеспечение соблюдения стандартов: Код-ревьюеры следят за соблюдением стандартов кодирования и архитектурных решений, что способствует единообразию и поддерживаемости кода.

  3. Обучение и обмен знаниями: Код-ревью — это возможность для обмена знаниями между разработчиками. Младшие разработчики могут учиться у более опытных коллег, а также узнавать о лучших практиках и новых подходах.

  4. Повышение командного духа и сотрудничества: Процесс ревью способствует более тесному взаимодействию внутри команды, что улучшает понимание кода и взаимозаменяемость разработчиков.

  5. Выявление потенциальных уязвимостей безопасности: Код-ревьюеры могут заметить и предотвратить потенциальные уязвимости безопасности в коде, которые могли быть упущены автором.

  6. Улучшение документации и комментариев: Ревьюеры могут указать на недостатки в документации и комментариях к коду, что поможет сделать код более понятным для других разработчиков.

Основные задачи код-ревьюера

  1. Проверка логики и функциональности: Убедиться, что код работает правильно и соответствует требованиям, что не было упущено никаких важных деталей.

  2. Проверка тестов: Убедиться, что код покрыт тестами и что тесты написаны корректно.

  3. Анализ производительности: Оценить, как код повлияет на производительность системы, и предложить улучшения при необходимости.

  4. Проверка читаемости и поддерживаемости кода: Убедиться, что код легко читается и поддерживается, что соблюдаются принципы чистого кода (clean code).

  5. Оценка соблюдения стандартов: Проверить, что код соответствует стандартам и стилям, принятым в команде или компании.

Например

Исходный код

Разработчик написал следующую функцию для вычисления суммы квадратов чисел от 1 до n:

package main

import "fmt"

func sumOfSquares(n int) int {
    result := 0
    for i := 1; i <= n; i++ {
        result += i * i
    }
    return result
}

func main() {
    fmt.Println(sumOfSquares(10))
}

Код-ревью

Теперь давайте рассмотрим, как код-ревьюер может проверить этот код и предложить улучшения.

Комментарий 1: Обработка граничных случаев

func sumOfSquares(n int) int {
    if n <= 0 {
        return 0
    }
    result := 0
    for i := 1; i <= n; i++ {
        result += i * i
    }
    return result
}

Процесс код-ревью помогает улучшить качество кода, обеспечивая его правильность, оптимизацию и читаемость. В данном примере ревьюер предложил улучшения, которые касаются обработки граничных случаев о чем не предусмотрел разработчик, эти изменения сделали код более эффективным.

Заключение

Код-ревьюеры не демоны, которые хотят, чтобы мы писали под их диктовку. Они просто хотят, чтобы все было правильно, с целью дальнейшего масштабирования проекта, оптимизации производительности, повышения безопасности и так далее. Код-ревьюеры на практике не стремятся передавать знания, если вы этого не хотите. Однако, они могут предложить улучшения, которые сделают ваш код лучше и помогут вам стать более профессиональным разработчиком.

Так что, если вы сталкиваетесь с код-ревью, примите это как шанс улучшить свои навыки и внести вклад в качество проекта.