Рефакторинг кода на Java
В курсе рассматривается понятие рефакторинга, как способ предотвращения распада программы. Рассматриваются различные признаки плохого кода (smells), требующего рефакторинга, объясняется, какой именно рефакторинг наилучшим образом подходит для той или иной ситуации, и описывается его механика, которая подробно разбирается на конкретных примерах из реальных задач.
24 ак.ч.
Онлайн
DEV-006_JVA
Рефакторинг кода на Java
Записаться на курс
Длительность
24 ак.ч.
Локация
Онлайн
Код
DEV-006_JVA
Расписание и цены
06.12.2022 - 15.12.2022
27 500 руб.
Планируете обучить команду из 7-8 или более человек?
Закажите корпоративное обучение с учетом ваших потребностей
Рефакторинг кода на Java
Записаться на курс
Длительность
24 ак.ч.
Локация
Онлайн
Код
DEV-006_JVA
Расписание и цены
06.12.2022 - 15.12.2022
27 500 руб.
Планируете обучить команду из 7-8 или более человек?
Закажите корпоративное обучение с учетом ваших потребностей

Описание

В курсе рассматривается понятие рефакторинга, как способ предотвращения распада программы. Рассматриваются различные признаки плохого кода (smells), требующего рефакторинга, описывает, какой именно рефакторинг наилучшим образом подходит для той или иной ситуации, и описывает его механику, подробно разбирая ее на конкретных примерах из реальных задач.

Во время обучения слушатели изучат основные стратегии рефакторинга Java приложений, а также такие темы как явные проблемы внутри классов, явные проблемы между классами, методы компоновки, перемещение функций между объектами, организация данных, упрощение условных выражений, упрощение вызовов методов, работа с обобщениями, рефакторинг в Java 8, рефакторинг и тестирование.

Цели

После завершения обучения слушатели смогут:
  • понимать принципы рефакторинга;
  • объяснить необходимость рефакторинга;
  • внедрять фазу рефакторинг в процесс разработки;
  • идентифицировать проблемный код (smells);
  • принимать решение о проведение рефакторинга над проблемным кодом;
  • пошагово выполнять рефакторинг;
  • использовать автоматизированные средства для проведения рефакторинга.

Целевая аудитория

  • Разработчики;
  • Старшие разработчики.

Предварительная подготовка


Разбираемые темы

  • 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писание курсов
Вид:
06.12.2022 - 15.12.2022
15:00-18:00
Локация:Онлайн
Длительность:24 ак.ч.
Время:15:00-18:00
Тренер: Козлов Павел
27 500 руб.
Записаться
Смотреть полное расписание
Тренеры
Козлов Павел
Специалист в области разработки ПО
Павел работает в Luxoft с 2005 года. За это время он принимал участие в ряде проектов для ведущих российских и зарубежных компаний, таких как Boeing, Почта России, DHL, MVideo. В настоящее время он играет роль ведущего инженера-программиста в проекте по поддержке крупнейшей розничной сети по продаже электроники и бытовой техники в России. Главный интерес Павла - разработка масштабируемых приложений Java, а также предоставление технических решений для повышения производительности и надежности приложений.
Отзывы (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
Курс для начинающих и опытных разработчиков для углубленного понимания Java. В курсе подробно рассматриваются паттерны проектирования и языковые идиомы, а также демонстрируется, как максимально эффективно использовать различные возможности от обобщенных типов до перечислений, от аннотаций до автоупаковки.
Онлайн:
14.12.2022 - 22.12.2022
Смотреть каталог
Ваши преимущества
Экспертность
Тренеры-эксперты из реальных проектов крупнейших компаний, лидеров в своей отрасли
Живое обучение
“Живая” коммуникация с тренером даже в онлайн-формате
Практика
Максимально наполненные практикой занятия, работа в группах, выполнение домашних заданий
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.