04.12.2018. Лекция №13. Рефакторинг (ч.2).

Развернуть

  1. Перемещение функций между объектами.
  2. Перемещение метода (Move method).
  3. Перемещение поля (Move field).
  4. Извлечение класса (Extract class).
  5. Встраивание класса (Inline class).
  6. Сокрытие делегирования (Hide delegate).
  7. Удаление посредника (Remove middle man).
  8. Организация данных.
  9. Замена простого поля объектом (Replace data value with object).
  10. Замена поля-массива объектом (Replace array with object).
  11. Замена однонаправленной связи двунаправленной (Change unidirectional association to bidirectional).
  12. Замена двунаправленной связи однонаправленной (Change bidirectional association to unidirectional).
  13. Замена магического числа символьной константой (Replace magic number with symbolic constant).
  14. Инкапсуляция поля (Encapsulate field).
  15. Инкапсуляция коллекции (Encapsulate collection).
  16. Упрощение условных выражений.
  17. Разбиение условного оператора (Decompose conditional).
  18. Объединение условных операторов (Consolidate conditional expression).
  19. Объединение дублирующихся фрагментов в условных операторах (Consolidate duplicate conditional fragments).
  20. Замена вложенных условных операторов граничным оператором (Replace nested conditional with guard clauses).

27.11.2018. Лекция №12. Рефакторинг (ч.1).

Развернуть

  1. Что такое рефакторинг.
  2. Приемы рефакторинга.
  3. Составление методов.
  4. Выделение метода (Еxtract method).
  5. Встраивание метода (Inline method).
  6. Встраивание переменной (Inline temp).
  7. Расщепление переменной (Split temporary variable).
  8. Замена переменной вызовом метода (Replace temp with query).
  9. Удаление присваиваний параметрам (Remove assignments to parameters).
  10. Упрощение вызовов методов.
  11. Переименование метода (Rename method).
  12. Добавление параметра (Add parameter).
  13. Удаление параметра (Remove parameter).
  14. Разделение запроса и модификатора (Separate query from modifier).
  15. Передача всего объекта (Preserve whole object).
  16. Замена параметров объектом (Introduce parameter object).

06.11.2018. Лекция №10-11. Многопоточность.

Развернуть

  1. Что такое многопоточность?
  2. Средства синхронизации.
  3. std::thread.
  4. std::mutex.
  5. std::condition_variable.
  6. Атомарные операции, std::atomic.
  7. volatile.
  8. std::future.
  9. std::packed_task.
  10. std::async.
  11. std::promise.
  12. Flip-flop буфер.
  13. FIFO на списке блоков.
  14. FIFO на кольцевом буфере.

30.10.2018. Лекция №9. Сборка кода. Библиотеки.

Развернуть

  1. Алгоритм сборки программ на C++. Объектные файлы. Библиотеки.
  2. Динамические библиотеки.
  3. Что такое хорошая библиотека?
  4. Библиотечный подход к решению квадратного уравнения.
  5. Краткое описание самых полезных библиотек для C++: Qt, Boost, OpenCV.
  6. Структурирование исходных файлов в больших проектах.

23.10.2018. Лекция №8. Паттерны проектирования (ч.3).

Развернуть

  1. Паттерн Adapter (Адаптер).
  2. Паттерн Decorator (Декоратор).
  3. Паттерн Proxy (Заместитель).
  4. Паттерн Facade (Фасад).
  5. Паттерн Composite (Компоновщик).
  6. Паттерн Object Pool.
  7. Паттерн Null Object.
  8. Паттерн Servant (Слуга).
  9. Модель MVC.

16.10.2018. Лекция №7. Паттерны проектирования (ч.2).

Развернуть

  1. Паттерн Iterator (Итератор).
  2. Паттерн Command (Команда).
  3. Паттерн Template method (Шаблонный метод).
  4. Паттерн State (Состояние).
  5. Паттерн Strategy (Стратегия).

09.10.2018. Лекция №6. Паттерны проектирования (ч.1).

Развернуть

  1. Design Patterns как явление.
  2. Виды паттернов.
  3. Паттерн Singleton (Одиночка).
  4. Паттерн Builder (Строитель).
  5. Паттерн Factory Method (Фабричный метод).
  6. Паттерн Prototype (Прототип).

02.10.2018. Лекция №5. Вариативные шаблоны.

Развернуть

  1. Эмуляция вариативных шаблонов (variadic template) до С++11.
  2. Эллипсис оператор (...).
  3. Пакет параметров шаблона (template parameter pack).
  4. Раскрытие пакета (pack expansion).
  5. Пример вариативного шаблона функций.
  6. Перегрузка вариативных и невариативных шаблонов.
  7. Подсчет аргументов пакета параметров.
  8. Распаковка без рекурсии.
  9. Выражения свертки (fold expression) C++17.
  10. Реализация tuple.

25.09.2018. Лекция №4. Современный С++.

Развернуть

  1. Объявление псевдонимов (alias declaration).
  2. Применение decltype и его особенности.
  3. std::move.
  4. Универсальные ссылки (universal references).
  5. Свертывание ссылок (reference collapsing).
  6. std::forward.
  7. Прямая передача (perfect forwarding).

18.09.2018. Лекция №3. «Черные ящики».

Развернуть

  1. Виды конструкторов.
  2. Конструкторы копирования и перемещения.
  3. Перегрузка оператора присваивания.
  4. Присваивание-копирование и присваивание-перемещение.
  5. Операции, генерируемые компилятором по умолчанию.
  6. Арифметические и побитовые операторы. Операторы (составного) присваивания, сравнения, логические, с указателями и др.
  7. Оператор преобразования типа. Создание временного объекта с вызовом конструктора с одним аргументом.
  8. Явные и неявные преобразования типов. Ключевое слово explicit.
  9. Глобальные operator new и operator delete.
  10. Placement new.
  11. Задание operator new и operator delete для конкретного класса.
  12. Удаление версий операторов, сгенерированных по умолчанию.
  13. Алгоритм поиска оператора.
  14. Операторы, которые нельзя перегрузить.

Действия