Software design is how code is structured at the module and class scale — the counterpart to system-scale architecture. It rests on three families: principles (SOLID, DRY, KISS, YAGNI — heuristics that keep code understandable), paradigms (OOP, functional, event-driven — the mental models you build within), and testing (unit, integration, TDD — the discipline that verifies behaviour and pressures the design toward decoupling). Example: applying single responsibility to split a fat service into focused classes is a design decision, and the fact that those classes are now trivial to unit-test is the feedback loop confirming it.

Questions

References

4 items under this folder.