Separating State from State Changes

Reflecting on a recent change of the Word Counter's file monitoring module, I think I re-discovered a commonly advised pattern in my code: to separate state from state changes. There's an object that knows how to handle files based on extension: plain text files's words are counted differently than Word or Scrivener files. Call it Registry. Previously, this was set up once and didn't change. Now I wanted to make this configurable so users can add custom plain text extensions. This means changing that object's state.

Continue reading …