Описание курса:
В курсе рассматривается понятие рефакторинга, как способ предотвращения распада программы. Рассматриваются различные признаки плохого кода (smells), требующего рефакторинга, описывает, какой именно рефакторинг наилучшим образом подходит для той или иной ситуации, и описывает его механику, подробно разбирая ее на конкретных примерах из реальных задач.
Во время обучения слушатели изучат основные стратегии рефакторинга Java приложений, а также такие темы как явные проблемы внутри классов, явные проблемы между классами, методы компоновки, перемещение функций между объектами, организация данных, упрощение условных выражений, упрощение вызовов методов, работа с обобщениями, рефакторинг в Java 8, рефакторинг и тестирование.
Необходимая подготовка:
• Прохождение курса DEV-001_JVA "Шаблоны проектирования GoF. Редакция для Java".
• Знание принципов объектно-ориентированного программирования.
• Опыт работы с объектно-ориентированными языками от 1 года.
• Знание UML.
Программа курса:
Модуль 1. Введение
• Что такое рефакторинг;
• Правила и стратегии;
• Рефакторинг и дизайн;
• Создание тестов;
• Явные проблемы;
• Средства рефакторинга;
• Книги о рефакторинге
Модуль 2. Явные проблемы внутри классов
• Измеряемые проблемы;
• Имена;
• Ненужная сложность;
• Дублирование;
• Условная логика.
Модуль 3. Явные проблемы между классами
• Данные;
• Наследование;
• Ответственность;
• Реализация изменений;
• Библиотечные классы.
Модуль 6. Организация данных
• Инкапсуляция поля;
• Самоинкапсуляция поля;
• Инкапсуляция коллекции;
• Замена записи классом данных;
• Замена значения данных объектом;
• Замена массива объектом;
• Изменение значения на ссылку;
• Изменение ссылки на значение;
• Дублирование видимых данных;
• Изменение двунаправленной связи однонаправленной;
• Изменение однонаправленной связи двунаправленной;
• Замена магического числа символической константой;
• Замена кода типа классом;
• Замена кода типа подклассом;
• Замена кода типа состоянием/стратегией;
• Замена подкласса полями.
Модуль 10. Рефакторинг в Java 8
• Замена анонимных классов лямбда-выражениями;
• Использование ссылок методов;
• Использование лямбда-выражений для реализации шаблона «команда»;
• Использование лямбда-выражений для реализации шаблона «стратегия»;
• Обработка коллекций с помощью лямбда-выражений;
• Использование потоков для отображения/фильтрации/снижения числа операций.
Модуль 11. Рефакторинг и тестирование
• Основы тестирования;
• Виды тестирования ПО;
• Разработка на основе тестирования;
• Рефакторинг с помощью тестов;
• Книги о тестировании на Java.
Окончательная цена указывается в договоре на обучение.