Browse Source

Merge branch 'master' of http://213.155.192.79:3001/ypv/ISRPO

ypv 1 year ago
parent
commit
e7733686ed

BIN
Лекции/Оптимальные методы ревью кода/1.jpg


BIN
Лекции/Оптимальные методы ревью кода/2.jpg


BIN
Лекции/Оптимальные методы ревью кода/3.jpg


BIN
Лекции/Оптимальные методы ревью кода/4.jpg


+ 98 - 0
Лекции/Оптимальные методы ревью кода/Lebedko.md

@@ -0,0 +1,98 @@
+# Оптимальные методы ревью кода
+## Стандарты, связанные с код-ревью 
+
+Обзор кода является неотъемлемой частью процессов, связанных с обеспечением высокого качества программного обеспечения. В ходе этого процесса один или несколько человек изучают и оценивают программу, основываясь преимущественно на анализе и чтении отдельных фрагментов исходного кода. 
+
+## Методы код-ревью 
+
+Проверка исходного кода может осуществляться как вручную, так и с использованием специальных инструментов для обзора кода. Этот процесс является неотъемлемой частью мониторинга качества программного продукта. Он направлен на поиск ошибок, обеспечение соответствия стандартам кодирования, улучшение читаемости и обеспечение возможности внесения изменений в код, а также на обнаружение дублированного кода и других проблем. Каждый компонент программного обеспечения или новая функция, разработанные сотрудниками компании-разработчика, подвергаются проверке на соответствие требованиям качества.  
+![Методы обзора исходного кода](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/)