Command-Query Separation
No, I'm not going to talk about CQRS, but the ideas behind both concepts are similar.
The Command-Query Separation principle was first introduced by Bertrand Meyer in his book Object-Oriented Software Construction. Mr Meyer states as follows:
Functions should no produce abstract side effects.
Meyer differentiates two kind of functions when we design a class:
Commands: those functions which produce abstract side effects (change the observable state of the object). Queries: those functions that don't produce any side effect and return some value.