Tôi bắt đầu viết một giao diện thông thạo và nhìn vào một mảnh cũ Martin Fowler đã viết trên giao diện thông thạo (mà tôi đã không nhận ra anh và Eric Evans đặt ra thuật ngữ). Trong phần này, Martin đề cập rằng những người định cư thường trả về một thể hiện của đối tượng đang được cấu hình hoặc làm việc, điều mà anh ta nói là vi phạm CQS.Giao diện thông thạo có vi phạm Nguyên tắc Tách Truy vấn Lệnh không?
Các quy ước chung trong thế giới cú đúp xoăn là modifier phương pháp này có hiệu lực, mà tôi thích vì nó tuân theo nguyên tắc của CommandQuerySeparation. Quy ước này không cản trở giao diện thông thoáng của , vì vậy tôi có khuynh hướng tạm ngưng quy ước cho trường hợp này.
Vì vậy, nếu giao diện thông thạo của tôi không giống như:
myObject
.useRepository("Stuff")
.withTransactionSupport()
.retries(3)
.logWarnings()
.logErrors();
Đây có phải là thực sự là một vi phạm CQS?
CẬP NHẬT Tôi đã phá vỡ mẫu của mình để hiển thị cảnh báo ghi nhật ký và lỗi dưới dạng hành vi riêng biệt.
'logWarningsAndErrors' có trả lại gì không? Nếu không, thì nó thực sự là một giao diện thông thạo? –
@ M.Babcock đã cập nhật mẫu của tôi. Chắc chắn, 'logWarningsAndErrors' trả về một giao diện mà tôi có thể thêm các hành vi bổ sung vào. –