Good Enough Design

Design is hard and "perfect design" is overrated! In my opinion, you can only do it if you time-travel to the future! There are, of course, some design decisions that are easier to make. However, in most cases, there are always a few interesting and equally plausible alternative designs.

Try not to spend a lot of time being torn over design options; pick one and start coding! You can always improve it later.

That said, be wary of delegating too much to your future self! When you are faced with a design decision, ask yourself: "what is the future cost of doing nothing today?" Every choice has a price. This "improve it now" versus "improve it later" dilemma always exists. The process perhaps becomes a bit easier when you learn about Design Principles.

The design principles are the Commandments of Object-Oriented Programming. We will next explore two fundamental principles of cohesion and coupling.

Good Enough Design! The path to changeable and maintainable object-oriented software begins with classes that are highly cohesive and loosely coupled.