Bounded Context
Phạm vi mà một từ có một nghĩa rõ ràng. Trong context này, một từ có một nghĩa cụ thể; sang context khác, nó có thể là khái niệm khác.
Cái bẫy “một từ nhiều nghĩa”
Cùng từ Order, nhưng ở checkout nó là đơn hàng, ở shipping là đơn giao, ở finance có thể gần với khoản phải thu. Nếu nhét tất cả vào một class Order, bạn tạo ra một god object mà dev khó hiểu và AI càng dễ regenerate sai.
Cách làm trong repo spec
/specs
/checkout-context
entities.md (Order = đơn hàng)
UC-042-PlaceOrderQR.md
/shipping-context
entities.md (Order = đơn giao hàng)
/finance-context
entities.md (Order = receivable)
Khi AI đọc spec trong /checkout-context, nó không bị kéo sang nghĩa của /shipping-context. Đó là cách ngăn một số lỗi kiến trúc từ rất sớm.
Nếu không quen DDD, chỉ cần nhớ một quy tắc: cùng một từ mà team dùng với hai nghĩa khác nhau thì sớm muộn cũng sinh lỗi. Khi nghe team tranh cãi “Order chỗ này khác Order chỗ kia”, đó là lúc nên tách context.
Liên quan
- Ubiquitous Language - một từ, một nghĩa, trong một context
- Entity Model - mỗi context có entity model riêng
- Cấu trúc Repo SDD - context phản ánh trong cách xếp thư mục
- Brownfield với SDD - chia bounded context trước, đào chi tiết sau