Рефакторинг кода на Java
Длительность
24 ак.ч.
Локация
Онлайн
Код
DEV-006_JVA
29 900 руб.
* Для физических лиц действует скидка 10% Закажите корпоративное обучение с учетом ваших потребностей
Описание
В курсе рассматривается понятие рефакторинга, как способ предотвращения распада программы. Рассматриваются различные признаки плохого кода (smells), требующего рефакторинга, описывает, какой именно рефакторинг наилучшим образом подходит для той или иной ситуации, и описывает его механику, подробно разбирая ее на конкретных примерах из реальных задач.
Во время обучения слушатели изучат основные стратегии рефакторинга Java приложений, а также такие темы как явные проблемы внутри классов, явные проблемы между классами, методы компоновки, перемещение функций между объектами, организация данных, упрощение условных выражений, упрощение вызовов методов, работа с обобщениями, рефакторинг в Java 8, рефакторинг и тестирование.После прохождения курса выдается
удостоверение о повышении квалификации государственного образца
удостоверение о повышении квалификации государственного образца
Цели
После завершения обучения слушатели смогут:
- понимать принципы рефакторинга;
- объяснить необходимость рефакторинга;
- внедрять фазу рефакторинг в процесс разработки;
- идентифицировать проблемный код (smells);
- принимать решение о проведение рефакторинга над проблемным кодом;
- пошагово выполнять рефакторинг;
- использовать автоматизированные средства для проведения рефакторинга.
Целевая аудитория
- Разработчики;
- Старшие разработчики.
Предварительная подготовка
- Прохождение курса DEV-001_JVA "Шаблоны проектирования GoF. Редакция для Java".
- Знание принципов объектно-ориентированного программирования.
- Опыт работы с объектно-ориентированными языками от 1 года.
- Знание UML.
Разбираемые темы
-
1. Введение (теория – 2 ч.; практика – 0,5 ч.)
- Что такое рефакторинг;
- Правила и стратегии;
- Рефакторинг и дизайн;
- Создание тестов;
- Явные проблемы;
- Средства рефакторинга;
- Книги о рефакторинге.
-
2. Явные проблемы внутри классов (теория – 1,5 ч.; практика – 1 ч.)
- Измеряемые проблемы;
- Имена;
- Ненужная сложность;
- Дублирование;
- Условная логика.
-
3. Явные проблемы между классами (теория – 0,5 ч; практика – 1 ч.)
- Данные;
- Наследование;
- Ответственность;
- Реализация изменений;
- Библиотечные классы.
-
4. Методы компоновки (теория – 1 ч.; практика – 1 ч.)
- Извлечение метода;
- Встраивание метода;
- Встраивание временной переменной;
- Замена временной переменной запросом;
- Введение поясняющей переменной;
- Расщепление временной переменной;
- Удаление присваиваний параметрам;
- Замена метода объектом методов;
- Замещение алгоритма.
-
5. Перемещение функций между объектами (теория – 1 ч.; практика – 1 ч.)
- Перемещение метода;
- Перемещение поля;
- Извлечение класса;
- Сокрытие делегирования;
- Удаление посредника;
- Внедрение внешнего метода;
- Внедрение локального расширения.
-
6. Организация данных (теория – 2 ч.; практика – 2 ч.)
- Инкапсуляция поля;
- Самоинкапсуляция поля;
- Инкапсуляция коллекции;
- Замена записи классом данных;
- Замена значения данных объектом;
- Замена массива объектом;
- Изменение значения на ссылку;
- Изменение ссылки на значение;
- Дублирование видимых данных;
- Изменение двунаправленной связи однонаправленной;
- Изменение однонаправленной связи двунаправленной;
- Замена магического числа символической константой;
- Замена кода типа классом;
- Замена кода типа подклассом;
- Замена кода типа состоянием/стратегией;
- Замена подкласса полями.
-
7. Упрощение условных выражений (теория – 1 ч.; практика – 1 ч.)
- Декомпозиция условного оператора;
- Консолидация условного выражения;
- Консолидация дублирующих условных фрагментов;
- Удаление управляющего флага;
- Замена вложенного условного оператора граничными операторами;
- Замена условного оператора полиморфизмом;
- Введение объекта Null;
- Введение утверждения.
-
8. Упрощение вызовов метода (теория – 1 ч.; практика – 1 ч.)
- Переименование метода;
- Добавление параметра;
- Удаление параметра;
- Разделение запроса и модификатора;
- Параметризация метода;
- Замена параметра явными методами;
- Замена параметра методом;
- Введение граничного объекта;
- Удаление метода установки значения;
- Сокрытие метода;
- Замена конструктора фабричным методом;
- Инкапсуляция нисходящего преобразования типа;
- Замена кода ошибки исключением;
- Обертывание проверяемого исключения в непроверяемое;
- Замена исключения проверкой.
-
9. Работа с обобщениями (теория – 1 ч.; практика – 1 ч.)
- Подъем поля;
- Подъем метода;
- Подъем тела конструктора;
- Спуск поля;
- Выделение подкласса;
- Выделение суперкласса;
- Выделение наследования;
- Свертывание иерархии;
- Формирование шаблона метода;
- Замена наследования делегированием;
- Замена делегирования наследованием.
-
10. Рефакторинг в Java 8 (теория – 0,5 ч.; практика – 1 ч.)
- Замена анонимных классов лямбда-выражениями;
- Использование ссылок методов;
- Использование лямбда-выражений для реализации шаблона «команда»;
- Использование лямбда-выражений для реализации шаблона «стратегия»;
- Обработка коллекций с помощью лямбда-выражений;
- Использование потоков для отображения/фильтрации/снижения числа операций.
-
11. Рефакторинг и тестирование (теория – 1 ч.; практика – 1 ч.)
- Основы тестирования;
- Виды тестирования ПО;
- Разработка на основе тестирования;
- Рефакторинг с помощью тестов;
- Книги о тестировании на Java.
Раcписание курсов
Вид:
Регистрируйтесь на следующий курс
Предварительная регистрация гарантирует участие в обучении. Мы обязательно оповестим вас, когда курс будет запланирован
Отзывы (2)
Участие в тренинге дает отличную возможность систематизировать и расширить свои знания о рефакторинге и его месте в разработке ПО. Особенно хочется отметить стиль работы тренера, ориентированный на создание общей картины без засорения ее отдельными подробностями. В целом, курс разработан очень грамотно и включает в себя различные источники и авторов.
Тренинг отличается от перовначальных ожиданий, но только в лучшую сторону. Преподаватель не боится отходить от темы курса и компетентно расскрывает другие вопросы - это крайне положительный момент.
Связанные курсы
Шаблоны проектирования (GoF). Редакция для Java
Шаблоны проектирования представляют собой совокупность некоего опыта, пригодную для повторного использования. Паттерны находят применение во всех областях деятельности, поскольку дают возможность использовать сработавшие ранее решения. Знание паттернов проектирования позволяет не только быстрее реализовать ваши решения и получать качественный исходный код, но и эффективнее общаться с коллегами, которые уже освоили данную технологию.
В курсе рассматривается 23 основных паттерна, которые описаны в книге “Design Patterns: Elements of Reusable Object-Oriented Software" («Шаблоны проектирования: элементы повторно используемого объектно-ориентированного программного обеспечения»), написанной четырьмя авторами («бандой четырех» - Gang of Four, GoF) – Erich Gamma, Richard Helm, Ralph Johnson и John Vlissides.
Эффективность Java
Курс предназначен для разработчиков, желающих улучшить свои навыки в проектировании и оптимизации кода, используя рекомендуемые технологии и подходы, доказавшие свою эффективность на практике. В рамках курса вы познакомитесь с различными методиками и инструментами, которые помогут вам создавать более эффективный и масштабируемый код.