Классы политик в стиле Александреску: компонуйте поведение из взаимозаменяемых политик времени компиляции вместо переключателей времени выполнения. Нулевые накладные расходы, никакого виртуального вызова, неограниченная настраиваемость.
#templates#policy#crtp#c++20#metaprogramming
Как работает стирание типов в C++. Внутренности std::function, std::any, самодельное стирание типов с буфером хранения — когда каждый подход стоит своей сложности.
#templates#vtable#type-erasure#c++17#performance
Инкапсуляция операций как объектов. Стеки отмены/повтора, запись макросов, очереди отложенного выполнения — с примером UI на Qt.
#gof#qt#patterns#undo#command
Структурирование прошивки C++ на слои HAL, драйвер, сервис и приложение. Соблюдение границ слоёв, чтобы изменения железа не распространялись в бизнес-логику.
#firmware#hal#embedded#architecture#stm32
Как развязать модули прошивки с помощью шины событий. Pub-sub без RTOS, безопасная публикация событий из ISR и компромиссы событийной архитектуры vs прямых вызовов.
#events#rtos#patterns#embedded#architecture
Безопасный асинхронный дизайн с паттерном «активный объект». Поток и его очередь сообщений инкапсулированы в одном классе — никакого разделяемого состояния, никаких блокировок на горячем пути.
#concurrency#threads#patterns#queues#safety
Централизация создания объектов в C++. Фабричный метод vs абстрактная фабрика, текучие строители и как эти паттерны взаимодействуют с внедрением зависимостей и тестированием.
#gof#creation#patterns#oop#di
Как Curiously Recurring Template Pattern обеспечивает абстракцию без накладных расходов, интерфейсы времени компиляции и компоновку примесей без виртуальных вызовов.
#templates#crtp#patterns#performance#c++
Стратегия времени выполнения и времени компиляции в C++. Устранение цепочек if-else с помощью виртуального вызова, параметров шаблона и CRTP. Стоимость каждого подхода.
#gof#templates#patterns#crtp#oop
Сравнение КА на enum + switch, табличном подходе и объектах-состояниях. С контекстом встраиваемой прошивки и проработанным примером менеджера соединений.
#fsm#embedded#firmware#architecture
Чисто виртуальные классы, проектирование контрактов, устойчивых к подстановке, и как интерфейсное мышление меняет подход к написанию тестируемого C++.
#oop#testability#interfaces#architecture
Инъекция через конструктор, компромиссы сервис-локатора и как соединить C++-приложение без DI-контейнера.
#di#coupling#oop#architecture
Практическое расположение src/include/lib/test с чистыми файлами CMakeLists. Как избежать монолита, соблюдать границы слоёв и поддерживать разумное время сборки.
#cmake#layout#build
Каждый принцип SOLID проиллюстрирован реальным кодом прошивки. Как выглядят нарушения, как их исправлять и почему это важно на микроконтроллере.
#solid#embedded#stm32#oop