← ClaudeAtlas

state-machine-if-improves-understandinglisted

Помогает решить, когда использовать switch-машину состояний (Шалыто), а когда — обычный SRP-код. Применяй при проектировании логики �� нелинейными переходами, циклами обработки, постраничной загрузкой, retry-паттернами. Не применяй без явных признаков сложности.
InExSu/claude-skills · ★ 0 · AI & Automation · score 75
Install: claude install-skill InExSu/claude-skills
# State Machine and SRP — когда использовать switch машину состояний Шалыто ## Правило выбора Перед тем как писать switch машину состояний Шалыто, проверь: есть ли хотя бы один из признаков сложности. Если нет — пиши обычный код с SRP. --- ## Когда switch машина состояний Шалыто оправдана Используй switch машину состояний Шалыто если есть **хотя бы один** из признаков: - **Нелинейные переходы** — из одного состояния можно попасть в разные следующие в зависимости от условий - **Повторные входы** — состояние может быть достигнуто из нескольких других состояний - **Пропускаемые состояния** — часть состояний выполняется не всегда - **Цикл обработки с условным продолжением** — например, постраничная загрузка, retry-логика, обход дерева - **Явная конечность** — логика моделирует протокол, парсер, воркер с жизненным циклом ### Пример — оправданная switch машина состояний Шалыто ```php // Постраничная загрузка: fetch → check → fetch или finish case 'fetch_Page': $result = API_Fetch($ns, $page); $state = $result['has_More'] ? 'fetch_Page' : 'data_Process'; break; ``` --- ## switch или match Внутри машины состояний можно использовать как `switch`, так и `match` — выбирать тот, который нагляднее. Использовать **`match`** если: - Каждое состояние возвращает значение (новое состояние, результат) - Тело каждой ветки — одно выражение - Важна строгая проверка без неявного приведения типов ```php // match нагляднее когда состояние — это просто переход $state