2 ms·
I wrote that other comment just before dozing off for the night because I was surprised no one else had replied yet. But to expand on it: In Eiffel (which is a
by Jtsummers 4y ago
I wrote that other comment just before dozing off for the night because I was surprised no one else had replied yet. But to expand on it:
In Eiffel (which is an object oriented language), methods on objects are separated into two kinds: 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 https://en.wikipedia.org/wiki/Command–query_separation
- kaba0 4y agoThanks, 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.
- shadowgovt 4y agoSometimes, 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.