Улучшаемые навыки
Рефакторинг
C++
ООП
GoF
Паттерны
Разработка через тестирование
TDD
Инструменты
VS Code
Eclipse
Microsoft Office
Чему вы научитесь
01
Выделять проблемные места в программном коде на языке C++
02
Улучшать читабельность исходного кода на языке C++
03
Применять техники рефакторинга для улучшения архитектуры кода
04
Избавляться от запахов кода и улучшать дизайн программ
05
Проводить разработку через тестирование (TDD)
Программа курса
01
Рефакторинг – введение
Определение рефакторинга
Основы разработки через тестирование
Практика: Разработка модуля по методологии «Разработка через тестирование»
02
Запахи кода. Общая информация
Определение запаха кода.
Принципы хорошего дизайна.
Запахи кода в тестах, запахи в базах данных (обзор).
Запахи в архитектуре, запахи в управлении персоналом
Поля
Массивы данных
Ссылки и значения
Кодовые поля
Упрощение условных выражений
Упрощение вызова методов
Работа с обобщениями
Композиция методов
Практика: рефакторинг кода игры «Монополия»
Объединение условных выражений
Объединение дубликатов фрагментов условных выражений
Удаление контрольного флага
Удаление вложенных условий
Использование полиморфизма вместо условий
Null-объекты
Проверки (Assertions)
Практика: рефакторинг программы «Крестики-нолики»
05
Переименование метода/поля
Добавление/удаление параметров + параметризация
Разделение запроса и подсчетов
Замена параметров на выделенные методы
Использование нового объекта в качестве параметра
Замена параметра методом
Удаление метода настройки
Замена кодов ошибки на исключения
Замена исключений на проверки
06
Принцип открытости-закрытости
Поднятие полей/методов/конструкторов
Опускание полей/методов
Принцип Лисков
Выделение под/надклассов и интерфейсов
Сокращение иерархий
Замена наследования делегированием и обратно
Практика: рефакторинг программы «шахматные фигуры»
Выделение метода
Встраивание метода
Встраивание временных переменных
Замена временных переменных запросом
Введение объясняющих переменных
Разделение временных переменных
Замена полей класса на параметры
Замена метода на объект
Замена алгоритма
08
Легко обнаруживаемые проблемы
Именование
Чрезмерная сложность
Дублирование
Условная логика
09
Принцип единой ответственности
Связность
Закон Деметра
Передвижение методов/полей
Выделение класса
Встраивание класса
Сокрытие делегатов
Удаление посредника
Методы расширения
Практика: Улучшение кода программы «Видеопрокат»
Наследование
Ответственность
Приспосабливающиеся изменения
Библиотечные классы
11
Итого на курс 24 часов: теория – 15 ч ( 63%), практика – 9 ч ( 37%)
Для кого
Разработчик
Предварительная подготовка
Базовые общие знания в области программирования.
Базовые знания скриптовых языков.
Способность понимать логические потоки кода.