"Breaking Changes" design guideline shows most common issues that may meet in our code when we refactor and and create new versions.
This document includes a lot of samples of "weak" code that is likely be broken in process of creating new version of application. There are solutions how to fix it and how to write pure, long-lived code.