У цьому занятті студенти отримують практичні навички застосування SOLID принципів під час рефакторингу існуючого коду.
Мета — створити гнучку, масштабовану та чисту архітектуру шляхом застосування SRP, OCP, LSP, ISP та DIP.
- Провести аналіз вихідного «анти-SOLID» коду
- Визначити порушення кожного SOLID принципу
- Виконати рефакторинг згідно з:
- SRP — Single Responsibility Principle
- OCP — Open/Closed Principle
- LSP — Liskov Substitution Principle
- ISP — Interface Segregation Principle
- DIP — Dependency Inversion Principle
- Створити відповідні інтерфейси й абстракції
- Усунути зайві або циклічні залежності
- Додати мінімальний набір unit-тестів після рефакторингу
- Реалізація на мові Typescript
- Студент розуміє кожен SOLID принцип та пояснює його застосування
- Увесь вихідний код проаналізовано
- Усі порушення SOLID знайдено та описано
- Після рефакторингу:
- Кожен клас має одну відповідальність (SRP)
- Код розширюється через нові класи, а не редагування існуючих (OCP)
- Класи-нащадки повністю заміщають базові (LSP)
- Інтерфейси невеликі й специфічні (ISP)
- Залежності реалізовані через абстракції (DIP)
- Код структурований, логічний та зрозумілий
- Усі тести проходять успішно
- Звіт оформлений у Markdown (README.md)
├── pz-SOLID
│ ├── src
│ │ ├── original # код із навмисними порушеннями SOLID
│ │ ├── refactored # код після рефакторингу
│ │ ├── interfaces # абстракції та інтерфейси
│ ├── tests
│ │ ├── refactored.spec.js
│ ├── .editorconfig
│ ├── .gitignore
│ ├── jest.config.js
│ ├── package.json
│ ├── package-lock.json
│ ├── README.md
└──
SOLID: The First 5 Principles of Object-Oriented Design
JavaScript SOLID: Реалізація принципів