// architecture

Architectures

architecture 02 Sep 2024 7 мин. чтения

Проектирование на основе политик — сборка поведения во время компиляции

Классы политик в стиле Александреску: компонуйте поведение из взаимозаменяемых политик времени компиляции вместо переключателей времени выполнения. Нулевые накладные расходы, никакого виртуального вызова, неограниченная настраиваемость.

#templates#policy#crtp#c++20#metaprogramming
architecture 19 Aug 2024 6 мин. чтения

Стирание типов без виртуальных функций — внутренности std::function и самодельный вариант

Как работает стирание типов в C++. Внутренности std::function, std::any, самодельное стирание типов с буфером хранения — когда каждый подход стоит своей сложности.

#templates#vtable#type-erasure#c++17#performance
architecture 17 Jun 2024 5 мин. чтения

Паттерн «активный объект» — поток и очередь как один класс

Безопасный асинхронный дизайн с паттерном «активный объект». Поток и его очередь сообщений инкапсулированы в одном классе — никакого разделяемого состояния, никаких блокировок на горячем пути.

#concurrency#threads#patterns#queues#safety
architecture 03 Jun 2024 6 мин. чтения

Паттерны «фабрика» и «строитель»

Централизация создания объектов в C++. Фабричный метод vs абстрактная фабрика, текучие строители и как эти паттерны взаимодействуют с внедрением зависимостей и тестированием.

#gof#creation#patterns#oop#di
architecture 20 May 2024 6 мин. чтения

CRTP — статический полиморфизм и примеси

Как Curiously Recurring Template Pattern обеспечивает абстракцию без накладных расходов, интерфейсы времени компиляции и компоновку примесей без виртуальных вызовов.

#templates#crtp#patterns#performance#c++
architecture 26 Feb 2024 6 мин. чтения

Конечные автоматы — три подхода

Сравнение КА на enum + switch, табличном подходе и объектах-состояниях. С контекстом встраиваемой прошивки и проработанным примером менеджера соединений.

#fsm#embedded#firmware#architecture
architecture 19 Feb 2024 6 мин. чтения

Проектирование на основе интерфейсов в C++

Чисто виртуальные классы, проектирование контрактов, устойчивых к подстановке, и как интерфейсное мышление меняет подход к написанию тестируемого C++.

#oop#testability#interfaces#architecture
architecture 15 Jan 2024 8 мин. чтения

SOLID на практике — встраиваемый C++

Каждый принцип SOLID проиллюстрирован реальным кодом прошивки. Как выглядят нарушения, как их исправлять и почему это важно на микроконтроллере.

#solid#embedded#stm32#oop