Pull to refresh

Comments 8

Q в начале имён классов сначала сбило с толку…
Да уж… с кутями придется дружить только посредством костыля(
Namespaces ради этого, вроде, и были придуманы… Мне интересно, авторы знали про Qt, когда начинали писать эту либу?
дык вот и придется такой костыльчик сделать :) Фиг его знает, Qt с 1991 года берет историю.
Но QState и там и там есть, такая вот незадача. А костыль заключается в сборке кутей с кастомным дефолтным namespace'ом, что не слишком потом удобно для деплоймента.
А вообще спасибо за статью, ранее догадывался о таком подходе, но не думал, что есть столь развитые средства для его применения.
Рад стараться. В моей компании эта штука сильно помогла решить ряд проблем одного важного проекта. Удивило, что о QP на хабре всего один пост.
RTOS. Сервер на C под uCLinux без поддержки динамической линковки и pthreads. Программа реализует некий интерфейс для настройки ряда устройств, посредством которого можно мгновенно в любой момент времени изменить их конфигурацию. Действительно же применение новой конфигурации занимает некоторое время и представляет собой довольно сложный процесс взаимодействия с утройствами, который сильно зависит от текущего состояния устройств и применяемых настроек.
Стоит заменить, что до применения QP софт не раз переписывался, т.к. сложность алгоритма конфигурирования постоянно приводила к почти полной потере расширяемости и изобилию багов.
Применение UML диаграмм состояний и последовательности позволило решить эти проблемы. В итоге получилось 4 класса сущностей (один из которых имел 5-ти-уровневую диаграмму состояний!). QP помог реализовать эти сущности, превратив их соответственно в 4 класса активных объектов.
Ядро кооперативной многозадачности мы использовали свое, сделанное на основе предлагаемого фреймворком легковесного Vanilla Kernel (хотя, проще и лучше было бы прицепить GNU Pth).
Sign up to leave a comment.

Articles