Nên
- Khi hệ thống có số trạng thái rõ ràng và hữu hạn
- UI có trạng thái như: idle → loading → success / error
- Xử lý đơn hàng: created → paid → shipped → delivered → canceled
- Game, nhân vật idle → running → jumping → attacking
- Khi muốn trành spaghetti code trong các điều kiện if/else lồng nhau.
- Khi cần kiểm soát luồng xử lý phức tạp
- Khi làm việc với thiết bị, hệ thống nhúng, hoặc automation
- Khi làm workflow nghiệp vụ.
Không nên
- Khi luồng xử lý quá đơn giản.
- Khi trạng thái thay đổi liên tục không xác định rõ ràng.
- Khi nghiệp vụ thường xuyên thay đổi
- Khi cần tính linh hoạt cao