Hacker News new | ask | show | jobs
by deterministic 699 days ago
What works for me:

There are two types of objects: State objects and Tool objects.

The purpose of a State object is to maintain a state. Think strings, databases, files etc.

The purpose of a Tool object is to operate on State objects. Think loaders, printers, editors, transformers etc.

It’s a simple way to organise OO code. And it works. At very large scale (millions of lines of C++).

It is similar to the functional Data/Function thinking. However it actually works better because State objects can enforce constraints, and Tool objects can cleanly maintain an internal temporary state while operating on State objects.