# Оптимальные методы ревью кода ## Стандарты, связанные с код-ревью Обзор кода является неотъемлемой частью процессов, связанных с обеспечением высокого качества программного обеспечения. В ходе этого процесса один или несколько человек изучают и оценивают программу, основываясь преимущественно на анализе и чтении отдельных фрагментов исходного кода. ## Методы код-ревью Проверка исходного кода может осуществляться как вручную, так и с использованием специальных инструментов для обзора кода. Этот процесс является неотъемлемой частью мониторинга качества программного продукта. Он направлен на поиск ошибок, обеспечение соответствия стандартам кодирования, улучшение читаемости и обеспечение возможности внесения изменений в код, а также на обнаружение дублированного кода и других проблем. Каждый компонент программного обеспечения или новая функция, разработанные сотрудниками компании-разработчика, подвергаются проверке на соответствие требованиям качества. ![Методы обзора исходного кода](1.jpg) Создание надежного процесса обзора кода является основой для постоянного развития продукта и предотвращает выпуск небезопасного для пользователей кода. Для повышения качества кода и обеспечения проверки фрагментов кода другими членами команды, методы код-ревью должны входить в повседневную работу команд, занимающихся разработкой программного обеспечения. В процессе кода-ревью следует учитывать следующие факторы, которые являются ключевыми для достижения эффективных результатов. • Обзор кода должен проводиться оперативно, с получением быстрых ответов и обратной связи. Анализ кода должен производиться сразу после представления нового фрагмента кода, чтобы разработчик получил незамедлительную обратную связь. • Анализ кода должен способствовать обучению и развитию. Поскольку процесс направлен на повышение качества кода, обзоры должны стать возможностью обмена знаниями и опытом между коллегами. • Код-ревью должно сопровождаться тестированием. Без проведения необходимых тестов обзор может пройти мимо неисправленных ошибок и проблем с безопасностью кода. • После обзора кода следует комментировать и поощрять хорошее кодирование. Разработчику следует сообщить, что он хорошо справляется с работой. Код-ревью служит не только для поиска ошибок, но и для поощрения программистов. • Обзоры кода должны соответствовать стандартным практикам кодирования. Код-ревью не должен быть основан на индивидуальных предположениях, и следует придерживаться общепринятых принципов, на которые можно ссылаться и цитировать. Это необходимо для соблюдения стандартов кодирования, руководств по стилю и основных принципов языка программирования, используемых в разработке программного обеспечения. • Результаты код-ревью иногда могут вызывать разногласия между ревьюером и разработчиком. Программист может не соглашаться с правильностью и актуальностью сделанных замечаний. Такие разногласия следует разрешать на основе общепринятых практик, изложенных в руководстве по стандартам кодирования, а также учитывая мнения экспертов с большим опытом в данной области. ![Методы обзора исходного кода](2.jpg) Примеры комментариев к ревью кода: 1. Повышение эффективности кода: • "Рассмотрите возможность использования словаря вместо цикла для проверки существования элемента в списке". • "Этот участок кода можно рефакторить, чтобы использовать выражение-генератор". 2. Улучшение читабельности: • "Имя переменной 'temp' недостаточно описывает ее, пожалуйста, придумайте более осмысленное имя". • "Функцию можно сделать более читабельной, добавив к ней doc-строку, объясняющую ее назначение". 3. Обработка ошибок: • "Этот код не обрабатывает исключения должным образом, пожалуйста, добавьте блок try-except для обработки возможных ошибок". • "В данном случае не следует возвращать None, подумайте о том, чтобы вместо этого выбросить исключение". 4. Безопасность: • "Убедитесь, что пользовательский ввод санирован правильно, чтобы избежать атак XSS и SQL-инъекций". • "Рассмотрите возможность использования библиотеки типа hashlib для безопасного хэширования паролей вместо модуля sha256". 5. Тестовое покрытие: • "Этому коду нужно больше тестовых примеров, чтобы обеспечить полное покрытие и предотвратить регрессии". • "Пожалуйста, добавьте отрицательные тестовые случаи, чтобы проверить поведение кода в непредвиденных ситуациях". 6. Стандарты кода и лучшие практики: • "Функция не должна иметь побочных эффектов, пожалуйста, отрефакторите ее, чтобы она возвращала только значение". • "Избегайте использования глобальных переменных, вместо них используйте свойства класса или аргументы функций". ![Методы озора исходного кода](3.jpg) ## Эффективные подходы ревью кода • Определите цели и стандарты компании. Перед началом процесса кода-ревью необходимо определить ключевые параметры и установить ясные цели. Цели компании должны соответствовать стандартам программирования. Установив свои стандарты, компания должна гарантировать соответствие всех разрабатываемых программных продуктов требованиям. • Создайте чек-лист для проверки кода. Чек-лист состоит из набора рекомендаций и вопросов, которыми компания следует во время проверки кода. Такой подход помогает организовать необходимые процедуры проверки качества кода перед его утверждением в кодовой базе. • Установите метрики для оценки кода. Эффективность повышения качества кода должна быть оценена при помощи объективных метрик. Используя такие метрики, можно изучить влияние изменений и оценить результаты своих оценок. • Ограничьте количество проверяемых строк кода за один раз. Это необходимо для обеспечения одинаковой эффективности процесса обзора кода. • Используйте инструменты автоматизации. Каждая команда или компания, занимающаяся разработкой, должна иметь специализированные инструменты для автоматизации проверки кода. С помощью таких инструментов можно сократить время проверки до нескольких минут. Они способны проанализировать всю базу кода за считанные минуты, обнаружить ошибки и дублированный код, а также предложить варианты исправлений. Некоторые из таких инструментов включают PVS-Studio (для выявления опечаток, неиспользуемого кода и потенциальных уязвимостей), SonarQube (для проверки ошибок, соответствия стандартам кодирования и технического долга), AppRefactoring (для выявления дублированного кода и пересечений фрагментов кода, предоставляющего информацию для создания уникального кода), Codacy (для выявления ошибок в коде и проблем безопасности) и другие. • Предоставьте положительную обратную связь на обзоре кода. Исходный код может быть результатом парного программирования, поэтому полезно давать обратную связь о положительных изменениях и рекомендациях. ![Чек-лист для ревью кода](4.jpg) ## Примеры чек-листа ревью кода: 1. Структура кода: - Правильные отступы и форматирование - Соответствие правилам именования и четкая организация кода - Наличие комментариев и документации 2. Оптимизация и производительность: - Эффективность и оптимизация кода - Избегание ресурсоемких операций 3. Безопасность: - Валидация и защита ввода данных - Практика безопасного программирования (например, предотвращение SQL-инъекций) - Защита от распространенных угроз (например, XSS атак) 4. Функциональность: - Правильное и ожидаемое поведение кода - Обработка и отладка ошибок 5. Тестирование: - Правильное тестирование и покрытие кода тестами - Создание корректных тестовых случаев и условий 6. Стандарты кодирования и лучшие практики: - Соблюдение профессиональных стандартов и соглашений - Возможность повторного использования кода, поддерживаемость и масштабируемость - Правильная обработка ошибок и исключений ## Анализ дублированного кода В среде разработчиков широко распространено мнение о важности проверки кода на наличие дублирования и пересечений, что подтверждается практикой. Ревью кода должно включать контроль за дублированием кода, так как это позволяет легче вносить изменения в будущем и сокращает технический долг. Одной из метрик, которую можно использовать, является процентное соотношение дублирующихся фрагментов кода к общему количеству строк кода. Для поиска и удаления дублированного кода можно использовать инструменты, например, AppRefactoring. Это сервис помогает обнаружить и удалить дублированный код, а также провести рефакторинг программного обеспечения. ## Заключение Основная цель код-ревью - обеспечить общее качество и безопасность программной системы. Ревью кода коллег не должно вызывать страх или разочарование. Установите стандарты для процесса проверки кода, используйте метрики и автоматизированные инструменты, чтобы помочь в анализе и улучшении исходного кода. [Использованная литература](https://habr.com/ru/articles/716068/)