ReusableDesign code can be easily applied to other projects. This means it is well encapsulated which complements FlexibleDesign.
Frameworks and applications call for a different approaches to design. When designing a framework, one cannot start with a SimpleDesign then refactor towards flexibility. This is primarily because a framework must be adaptable to many different projects. It is often required to think of flexibility and reusability ahead of time when designing frameworks.
Taking It Too Far
First determine how important ReusableDesign is for your specific project. Most applications do not require reusability and it can therefore hinder the overall design with unnecessary complexities. To avoid this, focus on flexibility and some reusability will come as a side effect.