Some of the Key factors that need to consider while architecting or designing a software solution is Reusability, Extensibility.
Many times you might have gone through various tutorials on SOLID software design principles. Don’t mind… let me put it here again on my words and my understanding.
The key behind any good software design is Low coupling and High cohesion. The term itself gives some hint of what it means. You will get more insight when you read on further.
If you design your software by following the mentioned SOLID principles it is guaranteed to a great extent loosely coupling and with a high degree of cohesion. Let me delve deeper
Table of Contents
What is SOLID?
There should never be more than one reason for a class to change. Ideally, each class should have only a single purpose within the system
Software Entities like Classes, Modules, Functions, etc. should be open for extension but closed for modifications.
Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.
Clients should not be forced to depend upon interfaces that they don’t use. This means separate client-specific interfaces are always better than one general-purpose interface.
High-level modules should not depend on low-level modules. Both should depend on the abstraction. Abstraction should not depend on details. Details should depend on Abstraction.