❌ Антипаттерны проектирования ПО (часть 2)
Лавина изменений (Lava Flow)
Неиспользуемый или мертвый код остается в проекте
❔ боязнь сломать существующую систему, отсутствие документации
➡ код, написанный в начале проекта, но не удаленный после изменения требований
Незакрытые соединения (Resource Leak)
Системные ресурсы (например, память или соединения) не освобождаются после использования
❔ошибки в управлении ресурсами, отсутствие тестирования
➡ открытые файловые сетевые соединения, которые не закрываются после завершения работы
Избыточная абстракция (Abstract Obsession)
Усложнение архитектуры за счет добавления ненужных абстракций
❔ желание сделать код более гибким без необходимости
➡ введение интерфейсов и классов для простых операций, которые не требуют такой сложности
Форма, нарушающая контракт (Leaky Abstraction)
Абстракция, которая не скрывает детали реализации, нарушая инкапсуляцию
❔ недостаточно продуманная архитектура, слишком низкий уровень абстракции
➡ библиотека, которая требует от пользователя знания о её внутренней структуре
Необоснованные зависимости (Unnecessary Dependencies)
Модули зависят друг от друга без веской причины
❔плохое планирование, отсутствие модульности
➡ логика бизнес-слоя зависит от UI-компонентов, что затрудняет изменение интерфейса
Перекрестные зависимости (Cyclic Dependencies)
Модули зависят друг от друга, создавая циклические зависимости
❔ недостаточное планирование, отсутствие четкой архитектуры
➡ модуль А зависит от модуля B, который в свою очередь зависит от модуля A
Копипаст (Copy-and-Paste Programming)
Код копируется и вставляется в разных местах без модификации или рефакторинга
❔ спешка, отсутствие времени на рефакторинг
➡ фрагмент кода для обработки ошибок, дублированный в нескольких методах
Неразрешимая взаимозависимость (Circular Dependency)
Два или более модуля зависят друг от друга напрямую или косвенно
❔ непродуманное разделение обязанностей, спешка при разработке
➡ модуль управления пользователями зависит от модуля управления ролями, и наоборот
Черный ящик (Magic Numbers)
Использование в коде числовых значений без пояснения их смысла
❔ недостаток времени на документирование, слабое проектирование
➡ число "7", использованное для обозначения количества попыток, без объяснения причины выбора
Часть 1 👆
📎 Материалы
1. Магическое число (Magic Number)
2. Большой комок грязи
3. Антипаттерн — Золотой молоток (Golden Hammer)
4. Золотой молоток
5. Спагетти-статья о спагетти-коде
6. Автоматы против спагетти-кода
7. God object. Анализ сложных проектов
8. Антипаттерн — Божественный объект (God Object)
9. Антипаттерн — Метод копипаста (Copy and paste programming)
10. Антипаттерны проектирования: Dead End
11. Антипаттерны построения микросервисных приложений в высоконагруженных проектах
12. Что такое антипаттерны? Разбираем примеры
13. Топ-10 антипаттернов при использовании микросервисов
14. 9 анти-паттернов, о которых должен знать каждый программист
⏯ Видео
1. Худшие практики разработки и архитектуры за 12 минут
2. Антипаттерны
3. Антипаттерны (обзор нескольких)
📚 Книги
Типичные ошибки проектирования -- Эрик Аллен
#проектирование #архитектура
Post #494
11.9K
- 🔥 22
- 👍 10
- ❤ 5
- 💩 1