На одну сторінку
Принципи програмування: шпаргалка
Те, що варто тримати під рукою. Якщо рядок незрозумілий, повернись у відповідний урок курсу.
Відкрити курс: Принципи програмуванняБазові правила
| Що | Як |
|---|---|
| DRY | Одне знання, одне місце. Дублювання дешевше за хибну абстракцію. |
| KISS | Найпростіше рішення, яке працює. |
| YAGNI | Не пиши код під вимоги, яких ще немає. |
| Правило трьох | Виносити спільне на третьому повторі, не на другому. |
SOLID одним рядком
| Що | Як |
|---|---|
| S: Single Responsibility | Одна причина для зміни на модуль. |
| O: Open/Closed | Нова поведінка новим кодом, без правок старого. |
| L: Liskov Substitution | Підтип працює всюди, де працює батько. |
| I: Interface Segregation | Вузькі інтерфейси під конкретного клієнта. |
| D: Dependency Inversion | Бізнес-логіка залежить від інтерфейсів, не від бази й HTTP. |
Запахи коду, які варто прибрати
| Що | Як |
|---|---|
| Довгий switch за типом | Стратегія або мапа обробників (O). |
| Булеві прапорці в параметрах | Розділи на кілька функцій. |
| new Postgres() усередині сервісу | Передай залежність у конструктор (D). |
| Коментар «що робить код» | Перейменуй змінну або винеси функцію. |
| Метод кидає NotImplemented | Порушено Liskov: переглянь ієрархію. |
| Клас на 500 рядків | Знайди причини змін і розділи (S). |
Мапа патернів
| Що | Як |
|---|---|
| Strategy | Кілька способів однієї дії: type Pricing = (base: number) => number |
| Factory | Одне місце вибору реалізації: createNotifier(channel, config) |
| Observer | Реакції на подію без прямих викликів: emitter.subscribe(fn) |