No he oído hablar de Command-Query-Separation (CQS) antes, pero parece que se relacionaría con el Principio de responsabilidad única (SRP), que establece que una función / clase idealmente debería ser responsable de hacer una cosa y solo una cosa .
Si su código de comando es de 20 líneas de código y el código de consulta son otras 30 líneas y están todas en un cuerpo de función, claramente está violando SRP y asumiría también CQS y esas dos piezas de lógica deberían estar separadas entre sí .
Sin embargo, siguiendo su ejemplo hipotético, lo más probable es que cree un método contenedor que combine su comando y consulta para que DRY no se viole en numerosos lugares del código. Tampoco consideraría que esto es una violación de SRP (y tal vez CQS), porque el contenedor todavía tiene una sola responsabilidad: combinar el comando con una consulta y crear una abstracción de nivel superior que sea más fácil de consumir.
Creo que el método wrapper es una solución perfectamente aceptable y, para ilustrarlo, llevemos su ejemplo un paso más allá. ¿Qué pasaría si tuviera que ejecutar 2 consultas en lugar de 1 y luego realizar una acción de comando basada en eso? Entonces, sus 2 líneas de código serían 6 u 8. ¿Qué pasaría si hubiera alguna validación / verificación de datos entre una y otra, por lo que ahora tiene 15 líneas de código? ¿Se lo pensaría dos veces antes de crear un contenedor que haga todo eso, en lugar de rociar esas 15 líneas en varios archivos?