10928 shaares
  
  
389 private links
389 private links
While copying the code, the right abstraction reveals itself.
If you start too early, you might end up with a bad abstraction that doesn’t fit the problem. You know it’s wrong because it feels clunky. Some typical symptoms include:
Removing a wrong abstraction is hard work.
Clean up afterwards :)