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