Чек-лист самопроверки
Чек-лист самопроверки
-
Понимаю ли я, что такое зависимость в контексте программного проекта?
-
Могу ли я отличить прямую зависимость от косвенной?
-
Умею ли я выявлять зависимости между классами в коде?
-
Знаю ли я, чем отличается модульная зависимость от библиотечной?
-
Понимаю ли я, почему жёсткая связь (tight coupling) вредна?
-
Могу ли я привести пример зависимости данных?
-
Умею ли я распознавать инфраструктурные зависимости?
-
Знаю ли я, что такое двунаправленная зависимость и почему она опасна?
-
Понимаю ли я, как косвенная зависимость может скрывать архитектурные проблемы?
-
Могу ли я объяснить, почему зависимость от конкретной реализации — это антипаттерн?
-
Знаю ли я формулировку принципа инверсии зависимостей (DIP)?
-
Понимаю ли я разницу между DIP и DI?
-
Могу ли я применить DIP к существующему коду?
-
Умею ли я проектировать интерфейсы как точки инверсии?
-
Знаю ли я, когда стоит использовать абстракцию вместо конкретного класса?
-
Понимаю ли я, почему абстракции не должны зависеть от деталей?
-
Могу ли я переписать код с жёсткой зависимостью на DIP-совместимый?
-
Умею ли я выделять общие контракты для разных реализаций?
-
Знаю ли я, как DIP влияет на тестируемость кода?
-
Понимаю ли я, как DIP способствует расширяемости системы?
-
Знаю ли я, что такое Dependency Injection?
-
Могу ли я перечислить все виды DI (constructor, setter, field, method, property)?
-
Умею ли я реализовать Constructor Injection в C#?
-
Умею ли я реализовать Constructor Injection в Java?
-
Умею ли я реализовать Constructor Injection в Python?
-
Умею ли я реализовать Constructor Injection в TypeScript?
-
Понимаю ли я, почему Constructor Injection считается предпочтительным?
-
Знаю ли я недостатки Setter Injection?
-
Понимаю ли я, когда допустимо использовать Property Injection?
-
Знаю ли я, почему Field Injection считается антипаттерном?
-
Могу ли я объяснить, что такое DI-контейнер?
-
Знаю ли я, как регистрировать сервисы в .NET DI-контейнере?
-
Знаю ли я, как регистрировать бины в Spring?
-
Понимаю ли я разницу между singleton, transient и scoped жизненными циклами?
-
Умею ли я настраивать DI-контейнер для сложных сценариев?
-
Знаю ли я, как DI-контейнер разрешает цепочки зависимостей?
-
Понимаю ли я, как контейнер обрабатывает циклические зависимости?
-
Умею ли я использовать DI-контейнер для внедрения моков в тестах?
-
Знаю ли я, как проверить, что все зависимости зарегистрированы корректно?
-
Понимаю ли я, когда DI-контейнер может быть избыточным?
-
Могу ли я написать тестируемый код с использованием DI?
-
Умею ли я заменять реальные зависимости на моки в unit-тестах?
-
Знаю ли я, как избежать утечек памяти при неправильном управлении жизненным циклом?
-
Понимаю ли я, как зависимости влияют на производительность приложения?
-
Умею ли я анализировать граф зависимостей в проекте?
-
Знаю ли я инструменты для визуализации зависимостей (например, NDepend, Structure101)?
-
Понимаю ли я, как управлять версиями внешних библиотек?
-
Умею ли я минимизировать количество транзитивных зависимостей?
-
Знаю ли я, как обновлять зависимости без нарушения совместимости?
-
Готов ли я применять эти принципы в реальных проектах и архитектурных решениях?