Стандарты код-ревью
Обзор кода - один и составляющих процессов поддержания качества программного обеспечения. В ходе него один или несколько человек изучают и оценивают программу в основном путем просмотра и чтения отдельных фрагментов его исходного кода.
![техники обзора исходного кода техники обзора исходного кода](https://habrastorage.org/getpro/habr/upload_files/e1c/868/658/e1c8686589a359ed54979e76a0b07309.png)
Проверка исходного кода вручную или автоматически (с помощью специальных инструментов обзора кода) является частью процесса мониторинга качества программы. Это делается для поиска и исправления ошибок, изучения соответствия стандартам кодирования, читабельности и ремонтопригодности кода, наличия дубликатов и т.д. Каждая часть программного обеспечения или новая функция, создаваемая разработчиками компании, проверяется на качество.
Создание надежной процедуры проверки кода закладывает основу для непрерывного развития продукта и предотвращает выпуск небезопасного для пользователей кода. Чтобы повысить качество кода и убедиться в том, что каждый фрагмент кода был просмотрен другим членом команды, методы код-ревью должны быть включены в повседневную работу команд, разрабатывающих программное обеспечение.
При проведении код-ревью следует помнить о следующих вещах, необходимых для эффективного результата.
Обзор кода должен быть быстрым, со своевременными ответами и обратной связью. Анализ кода должен проводиться сразу после выдвижения нового кода, чтобы разработчик мог получить моментальную обратную связь.
Анализ кода должен развивать и учить. Поскольку основной целью процесса является повышение качества кода, проводимые обзоры должны стать средством обмена знаниями и опытом между коллегами.
Обзор кода должен сопровождаться тестами. Без проведения необходимых тестов, обзор может оставить не устраненные ошибки и проблемы с безопасностью в коде.
Комментируйте и поощряйте хорошее кодирование после обзора кода. Стоит дать понять владельцу кода, что он хорошо справляется со своей работой. Обзор кода служит не только для поиска ошибок, но и для поощрения программистов.
Обзоры кода должны следовать стандартным практикам кодирования. Ревью кода не стоит строить на индивидуальных предположениях, необходимо следовать общепринятым принципам, на которые можно ссылаться и цитировать. Это необходимо для того, чтобы все придерживались стандартов кодирования, руководств по стилю и принципов языка, принятых для разработки программ.
-
Результаты ревью нередко могут стать причиной разногласий между ревьюером и разработчиком. Программист может не принимать корректность и актуальность выдвигаемых замечаний. Подобные споры следует разрешать, придерживаясь общепринятых практик, изложенных в руководстве по стандартам стиля кодирования, а также учитывая мнения специалистов, обладающих большим опытом в рассматриваемой области.
техники код-ревью
Примеры комментариев к ревью кода:
Повышение эффективности кода:
"Рассмотрите возможность использования словаря вместо цикла для проверки существования элемента в списке".
"Этот участок кода можно рефакторить, чтобы использовать выражение-генератор".
Улучшение читабельности:
"Имя переменной 'temp' недостаточно описывает ее, пожалуйста, придумайте более осмысленное имя".
"Функцию можно сделать более читабельной, добавив к ней doc-строку, объясняющую ее назначение".
Обработка ошибок:
"Этот код не обрабатывает исключения должным образом, пожалуйста, добавьте блок try-except для обработки возможных ошибок".
"В данном случае не следует возвращать None, подумайте о том, чтобы вместо этого выбросить исключение".
Безопасность:
"Убедитесь, что пользовательский ввод санирован правильно, чтобы избежать атак XSS и SQL-инъекций".
"Рассмотрите возможность использования библиотеки типа hashlib для безопасного хэширования паролей вместо модуля sha256".
Тестовое покрытие:
"Этому коду нужно больше тестовых примеров, чтобы обеспечить полное покрытие и предотвратить регрессии".
"Пожалуйста, добавьте отрицательные тестовые случаи, чтобы проверить поведение кода в непредвиденных ситуациях".
Стандарты кода и лучшие практики:
"Функция не должна иметь побочных эффектов, пожалуйста, отрефакторите ее, чтобы она возвращала только значение".
"Избегайте использования глобальных переменных, вместо них используйте свойства класса или аргументы функций".
![лучшие практики код-ревью лучшие практики код-ревью](https://habrastorage.org/getpro/habr/upload_files/685/185/f73/685185f73bd4befe306d6bf4d04f5487.png)
Лучшие практики ревью кода
Установите цели и стандарты компании. Перед началом процесса обзора кода очень важно выбрать ключевые показатели и установить четкие цели. Цели компании должны ставиться с учетом соответствующих стандартов программирования. Установив свои стандарты, компания должна гарантировать, что любой программный продукт, который она разрабатывает, будет соответствовать требованиям.
Создайте чек-лист для проверки кода. Чек-лист состоит из установленных наборов рекомендаций и вопросов, которых придерживается компания на протяжение всего процесса проверки кода. Это дает компании преимущество организованного подхода к необходимым проверкам качества кода, перед его утверждением в кодовой базе.
Установите некоторые метрики для обзора кода. Степень повышения качества кода должна каким-то образом оцениваться. Используя объективные метрики, вы можете изучить влияние запросов на изменения и оценить эффективность ваших оценок.
Ограничьте количество строк кода для обзора за один раз. Это необходимо для того, чтобы обзор проходил с одинаковой эффективностью.
Применяйте средства автоматизации. Любая команда или компания разработчиков должна иметь в своем арсенале специальные средства автоматизированной проверки кода. С помощью подобных инструментов, время проверки кода может быть сокращено до нескольких минут. Они способны проанализировать всю базу кода за считанные минуты,, обнаружить ошибки и дубликаты кода и предложить исправления. К таким инструментам можно отнести: PVS-Studio (выявляет опечатки, мертвый код, потенциальные уязвимости), SonarQube (проверяет ошибки, соответствие стандартам кодирования, технический долг), AppRefactoring (выявляет дубликаты и пересечения фрагментов кода, предоставляя информацию для уникализации кода), Codacy (выявляет ошибки в коде, проблемы безопасности) и другие.
Дайте положительную обратную связь на обзорах кода. Исходный код может быть результатом парного программирования, поэтому полезно давать обратную связь для позитивных изменений и рекомендаций.
![чек-лист для ревью кода чек-лист для ревью кода](https://habrastorage.org/getpro/habr/upload_files/1c6/e2d/35f/1c6e2d35fb4df9cc2ceaffe5809a4b14.png)
Пример чек-листа ревью кода
Структура кода:
Правильные отступы и форматирование
Согласование правил именования и четкой организации кода
Комментирование и документация
Производительность:
Эффективность и оптимизация кода
Избежание ресурсоемких операций
Безопасность:
Валидация и санация ввода
Практика безопасного кодирования (например, предотвращение SQL инъекций)
Защита от распространенных угроз (например, XSS)
Функциональность:
Правильное и ожидаемое поведение кода
Обработка и отладка ошибок
Тестовое покрытие:
Правильное тестирование и покрытие кода
Правильные тестовые кейсы и условия тестирования
Стандарты кода и лучшие практики:
Соблюдение профессиональных стандартов и соглашений
Возможность повторного использования, сопровождаемость и масштабируемость
Правильная обработка ошибок и исключений
Анализ дублированного кода
В среде разработчиков считается, что ревью кода на наличие дублей и пересечений имеет важное значение и это подтверждено практикой. Специалисты по обзору кода должны держать под контролем дублирующийся код, чтобы в дальнейшем было проще вносить необходимые изменения и сократить технический долг.
В качестве метрики можно использовать процентное соотношение дублирующихся фрагментов к общему количеству строк кода. Найти и удалить дублированный код можно с помощью таких инструментов, как AppRefactoring. Этот сервис помогает удалить дублированный код и провести рефакторинг программного обеспечения.
Заключение
Основная цель код-ревью - обеспечить общее качество и безопасность программной системы. Рецензирование кода коллег не должно быть пугающим или разочаровывающим. Установите стандарты для обзора кода, введите метрики и используйте инструмент автоматизации, чтобы помочь в процессе анализа исходного кода для изменений и улучшений.
KonstantinID
простите, а как статья относится к хабу Разработка мобильных приложений
kopaloni Автор
Необходимость анализа кода относится в равной мере и к разработке мобильных приложений. А анализ и выявление дублированного кода может помочь, если нужно уникализировать приложение для избежания бана от магазинов. Но это уже немного другая тема.
KonstantinID
а web, а прикладное, а системное программирование, а в бэкэнд/фронтэнд ?
тогда почему этих тэгов нет, а только моб. разработка?
kopaloni Автор
да, вы правы. постараюсь исправить