Principle devised by Bertrand Meyer and described in 'Object-Oriented Software Construction' (1988): a method should either be a command that mutates state or a query that returns information, but not both. Applying the same idea at service granularity yields CQRS.