Как стать автором
Обновить

Комментарии 5

Вы можете легко расширить список, если хотите

Я считаю, что со стейт машинами все же немного поаккуратнее надо быть. Если условно к Коту Ваське, добавить еще Пса Шарика, а так же применить некую функцию от их взаимных отношений. То для вычисления состояния такой системы, желательно уже обладать представлением о нормальных формах булевых функций, картах Карно и прочих методах оптимизации. Там нет ничего сложного, но думаю не многие предпочитают углубляться.

Просто это немного личная боль из опыта, когда пришлось рефакторить код с двумя стейт-машинами и парой десятков методов, хождения между ними, и зависящих еще от одного входа. В итоге появилась трехмерная матрица и 2-3 элементарных метода для ее обхода. В целом получилась абсолютно декларативная структура, и даже доступная для чтения и редактирования, при некотором терпении. Но мне немного страшно думать о том, может ли там возникнуть потребность в еще в одном измерении, вот вообще не представляю как структуру следующего порядка можно адекватно обернуть в нечто декларативное.

Но даже и плоские структуры, как в Ваших примерах, могут тоже очень неприятно разрастаться, если их не нормировать, проверено на личном опыте. Поэтому сейчас считаю, что при использовании подобной техники, очень желательно обладать неким запасом теории в этой сфере. И тогда действительно это может оказаться полезным инструментом.

Скажите, пожалуйста, где вы делали блок-схемы.

Напомню, что существует замечательный Graphviz, в который очень удобно скармливать сгенерированные состояния и переходы для их визуализации. Исходный текст обычно создаю с помощью простейшего SQL-запроса, если таблица состояний и переходов лежит в базе. Сгенерированный SVG потом при желании можно доработать напильником для красоты. Есть веб-песочницы (раз, два), чтобы попробовать синтаксис.

Ещё существует такая библиотека как XState, которая всё необходимое уже делает, только автоматы пиши. И картинки по коду (своей декларации) умеет рисовать. И биндинги для того же реакта тоже есть. Декларативно, и при этом достаточно прагматично - почти всё необходимое в комплекте.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий