The four solutions to every software design question

These are my four solutions which seem to cover most situations. I particularly like 4) because I’m lazy.

  • 1) Add a class (aka add another level of abstraction)
  • 2) Remove a class (aka remove a level of abstraction)
  • 3) Move stuff from one class to another (aka put the logic near the data or separation of concerns)
  • 4) Don’t do it! (aka the thing you are trying to do is too complex or not well defined, so find another way)
  • Share/Bookmark