Я начал писать беглый интерфейс и взглянул на более раннюю статью, написанную Мартином Фаулером о беглых интерфейсах (которую я не понимал, когда он и Эрик Эванс придумали этот термин).В этой статье Мартин упоминает, что сеттеры обычно возвращают экземпляр объекта, который настраивается или обрабатывается, что, по его словам, является нарушением CQS.методы являются недействительными, что мне нравится, потому что оно следует принципу CommandQuerySeparation.Это соглашение мешает плавному интерфейсу, поэтому я склонен приостановить действие соглашения для этого случая.
Так что, если мой свободный интерфейс делает что-то вроде:
myObject
.useRepository("Stuff")
.withTransactionSupport()
.retries(3)
.logWarnings()
.logErrors();
Является ли это действительно нарушением CQS?
ОБНОВЛЕНИЕ Я выделил свой образец, чтобы отобразить предупреждения и ошибки регистрации в виде отдельных действий.