CQS is a well-known concept from the early age of programming introduced by Bertrand Meyer in the Eiffel language. It says that every action should be either a command (that performs an action) or a query (that returns some data) but not both at the same time. It was devised to draw a clear line between performing mutations and collecting results. Meyer, Bertrand. “Eiffel: a language for software