Future-Proofing Design

The first thing about designing software is this: Design for change first and extensibility last. They’re different, and so is the mindset. Designing for change is about solid fundamentals. You know from experience that the later you make a change, the more expensive the change is. How do we reduce these costs? One way to…

0

Favor Composition Over Inheritance

Making code reusable through public class inheritance (PCI) is so convenient and easy that to say it should be avoided may sound a bit heretical. After all, isn’t this what OOP is about? And yet that’s the position I hold. To be clear, by PCI I refer to inheriting from an implementation class, not from…

2

Singletons are Evil

Singletons are evil. I hate them. No, “hate” is a strong word. I dislike them. They’re inherently easy to misuse. I guess the problem gets aggravated by the fact that the Singleton is the simplest of the Design Patterns to adopt and implement, so it tends to pop everywhere. I know because I’ve been there….

0