Empecé a escribir una interfaz fluida y eché un vistazo a una pieza más antigua que Martin Fowler escribió en interfaces fluidas (que no me di cuenta que él y Eric Evans acuñaron el término). En la pieza, Martin menciona que los instaladores generalmente devuelven una instancia del objeto que se está configurando o en el que se está trabajando, lo que él dice es una violación de CQS.¿Son las interfaces fluidas una violación del Principio de Separación de Consulta de Comando?
La convención común en el mundo corchete es que modificador métodos son nulos, lo que me gusta, ya que sigue el principio de Command-Query Separation. Esta convención se interpone en el camino de una interfaz fluida , por lo que estoy dispuesto a suspender la convención para este caso .
Así que si mi interfaz fluida hace algo como:
myObject
.useRepository("Stuff")
.withTransactionSupport()
.retries(3)
.logWarnings()
.logErrors();
¿Es esta realmente una violación de SCC?
ACTUALIZACIÓN Apagué mi muestra para mostrar las advertencias de registro y los errores como comportamientos separados.
¿El 'logWarningsAndErrors' devolver algo? Si no, ¿es realmente una interfaz fluida? –
@ M.Babcock actualizó mi muestra. Seguro, 'logWarningsAndErrors' devuelve una interfaz a la que puedo agregar comportamientos adicionales. –