Thanks, I wasn’t familiar with the name of this principle!
Though I feel these definitions of OOP are closing on the Actor model, so exact definitions are not really possible to give here.
Re:Functional Programming – How and Why
by shadowgovt on Tuesday January 03, 2023 @03:41PM
(#34237703)
Sometimes, depending on the nature of the implementation, Size() might do the work to compute the size, cache the result, and clear a dirty flag on the cache.
Not sure if that matters.
In Eiffel (which is an object oriented language), methods on objects are separated into twokind: commands and queries. This is also known as the "Command-Query Separation" principle. The idea is that commands are the ones causing changes to the systems and queries only inform you about the system. `a_set.add(item)` changes the set, while `a_set.has(item)` tells you about the set but makes no changes to it. It's very useful, and very common. I mean, I'd hope that `some_collection.Size()` doesn't actually change its size, that's not what it exists to do.
https://en.wikipedia.org/wiki/Command–query_separation