Having clean software architecture and staying conform to pre-defined design principles from start of the project is one of the best ways to avoid possible technical debt in the future of that software system. Clean Software Design is a key point for an effective software product. Let us have a look at some important principles, rules, guidelines that ensure a clean software design:
Principles:
Loose Coupling — if classes use each other, they are coupled together. The less classes are coupled, the easier is to change them.
High Cohesion — degree to which elements of a whole belong together. Components of the class should be highly cohesive.
Locality — Changes, maintenance, extensions are only local. This leads to no harming whole environment.
Removeable — Software Components should be easily removeable.
Small Components — software system should be only of small components ideally each doing only one task.
Class Design:
Single Responsibility Principle (SRP) — class should do only one task.