Основные проблемы поддержки ПМ?
•Устаревание кода и зависимостей
•Накопление технического долга
•Ошибки, выявленные в процессе эксплуатации
•Изменение требований бизнеса
Цель оптимизации кода
улучшение производительности и эффективности
Какие приемы можно применить для рефакторинга?
1.Извлечение метода (Extract Method)
2.Переименование переменных (Rename Variable)
3.Замена магических чисел на константы
4.Упрощение условных выражений
5.Устранение дублирования
Суть метода "разделение ответственности"
Каждый класс/метод решает одну задачу
Суть метода "оптимизация алгоритмов"
Выбор оптимальных структур данных
Цель поддержки ПМ
•Обеспечение работоспособности
•Улучшение сопровождаемости
Цель рефакторинга кода
улучшение читаемости и структуры без изменения функциональности
3 метода рефакторинга
•Плановый рефакторинг (часть спринта в Agile)
•Рефакторинг «по требованию» (перед добавлением нового функционала)
•Технический долг (фиксация в Issue Tracker: Jira, GitHub Issues)
Суть метода "устранение дублирования кода"
вынесение повторяющихся фрагментов в отдельные методы
Суть метода "тестирование и отладка"
Написание модульных тестов
Что такое технический долг?
•метафора программной инженерии, обозначающая накопленные в программном коде или архитектуре проблемы, связанные с пренебрежением качеством при разработке ПО
Методы оптимизации программного кода
Разделение ответственности, устранение дублирования кода, замена магических значений, улучшение читаемости, оптимизация работы с ресурсами, внедрение проверок и валидации, рефакторинг условных конструкций, оптимизация алгоритмов, тестирование и отладка, документирование изменений
2 инструмента рефакторинга
•Встроенные средства IDE (ReSharper, IntelliJ IDEA)
•Анализаторы кода (SonarQube)
Суть метода "замена магических значений"
Использование констант и перечислений
Суть метода "документирование изменений"
Фиксация выполненных оптимизаций
Состав работ по поддержке, 5 шагов
Мониторинг, исправление дефектов, обновление зависимостей, документирование зависимостей, резервное копирование и откат
Суть метода "улучшение читаемости"
Осмысленные имена переменных и методов
Что такое логирование?
Запись системных событий в специальные файлы - логи
Суть метода "рефакторинг условных конструкций"
Использование стратегий и шаблонов проектирования