Five principles for building software that is easy to understand, extend, and maintain. They reduce coupling, increase cohesion, and make code testable.
| SRP | One reason to change | "This class handles X and Y and Z" | | OCP | Add, don't modify | Growing if/else or switch chains for types | | LSP | Subtypes are substitutable | Type-checking or special-casing in calling code | | ISP | Small, focused interfaces | Empty method implementations or throw new Error("Not implemented") |
| DIP | Depend on abstractions | new ConcreteClass() inside business logic |
Применяйте принципы SOLID для написания гибкого, поддерживаемого и тестируемого кода. Используйте при проектировании классов, интерфейсов и границ модулей. Обложки синглов Ответственность, Открытость/Закрытость, Замена Лискова, Разделение интерфейсов и Инверсия зависимостей с практическими примерами TypeScript и эвристикой обнаружения. Источник: fellipeutaka/leon.