Курс «Рефакторинг кода на Java»

Направление
Java-разработка
Формат
Вебинар
Домашние задания
Есть
Итоговый экзамен
Нет
Количество уроков
11
Документ об обучении
Сертификат
Обратная связь
Есть
Доступ
Сразу после покупки
Последнее обновление 14.08.2022

О курсе

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

Программа курса

  1. 1. Введение (теория — 2 ч.; практика — 0,5 ч.)

    Что такое рефакторинг;
    Правила и стратегии;
    Рефакторинг и дизайн;
    Создание тестов;
    Явные проблемы;
    Средства рефакторинга;
    Книги о рефакторинге.
  2. Измеряемые проблемы;
    Имена;
    Ненужная сложность;
    Дублирование;
    Условная логика.
  3. Данные;
    Наследование;
    Ответственность;
    Реализация изменений;
    Библиотечные классы.
  4. Извлечение метода;
    Встраивание метода;
    Встраивание временной переменной;
    Замена временной переменной запросом;
    Введение поясняющей переменной;
    Расщепление временной переменной;
    Удаление присваиваний параметрам;
    Замена метода объектом методов;
    Замещение алгоритма.
  5. Перемещение метода;
    Перемещение поля;
    Извлечение класса;
    Сокрытие делегирования;
    Удаление посредника;
    Внедрение внешнего метода;
    Внедрение локального расширения.
  6. Инкапсуляция поля;
    Самоинкапсуляция поля;
    Инкапсуляция коллекции;
    Замена записи классом данных;
    Замена значения данных объектом;
    Замена массива объектом;
    Изменение значения на ссылку;
    Изменение ссылки на значение;
    Дублирование видимых данных;
    Изменение двунаправленной связи однонаправленной;
    Изменение однонаправленной связи двунаправленной;
    Замена магического числа символической константой;
    Замена кода типа классом;
    Замена кода типа подклассом;
    Замена кода типа состоянием/стратегией;
    Замена подкласса полями.
  7. Декомпозиция условного оператора;
    Консолидация условного выражения;
    Консолидация дублирующих условных фрагментов;
    Удаление управляющего флага;
    Замена вложенного условного оператора граничными операторами;
    Замена условного оператора полиморфизмом;
    Введение объекта Null;
    Введение утверждения.
  8. Переименование метода;
    Добавление параметра;
    Удаление параметра;
    Разделение запроса и модификатора;
    Параметризация метода;
    Замена параметра явными методами;
    Замена параметра методом;
    Введение граничного объекта;
    Удаление метода установки значения;
    Сокрытие метода;
    Замена конструктора фабричным методом;
    Инкапсуляция нисходящего преобразования типа;
    Замена кода ошибки исключением;
    Обертывание проверяемого исключения в непроверяемое;
    Замена исключения проверкой.
  9. Подъем поля;
    Подъем метода;
    Подъем тела конструктора;
    Спуск поля;
    Выделение подкласса;
    Выделение суперкласса;
    Выделение наследования;
    Свертывание иерархии;
    Формирование шаблона метода;
    Замена наследования делегированием;
    Замена делегирования наследованием.
  10. Замена анонимных классов лямбда-выражениями;
    Использование ссылок методов;
    Использование лямбда-выражений для реализации шаблона «команда»;
    Использование лямбда-выражений для реализации шаблона «стратегия»;
    Обработка коллекций с помощью лямбда-выражений;
    Использование потоков для отображения/фильтрации/снижения числа операций.
  11. Основы тестирования;
    Виды тестирования ПО;
    Разработка на основе тестирования;
    Рефакторинг с помощью тестов;
    Книги о тестировании на Java.