A principle that commands (methods that change state) should be separate from queries (methods that return data) in object-oriented programming.
"Adhering to CQS can make a system more understandable and maintainable by clearly distinguishing actions that alter state from those that retrieve information."