Проверяет понимание фундаментальных принципов проектирования модулей — связанности и связности — и умение применять их для создания поддерживаемого кода.
Coupling (связанность) и cohesion (связность) — две ключевые метрики качества архитектуры, введённые ещё в структурном программировании и актуальные сегодня. Они описывают, насколько сильно модули зависят друг от друга и насколько цельно устроен каждый модуль изнутри.
Coupling показывает, насколько один модуль знает о внутреннем устройстве другого. Чем больше модуль A зависит от деталей модуля B, тем сложнее менять B, не задев A. Слабый coupling достигается через интерфейсы, абстракции и внедрение зависимостей.
// Сильный coupling
class OrderService {
private db = new MySQLDatabase();
save(order) { this.db.insert(order); }
}
// Слабый coupling
class OrderService {
constructor(private db: Database) {}
save(order) { this.db.insert(order); }
}Cohesion описывает, насколько методы и данные внутри модуля относятся к одной задаче. Если класс делает всё сразу — валидацию, отправку email и работу с БД — cohesion низкий. Если класс отвечает за одну вещь, cohesion высокий.
// Низкий cohesion
class UserManager {
createUser() {}
sendEmail() {}
generateReport() {}
}
// Высокий cohesion
class UserService { createUser() {} }
class EmailService { sendEmail() {} }
class ReportService { generateReport() {} }Принципы напрямую связаны с SOLID: Single Responsibility повышает cohesion, Dependency Inversion снижает coupling. На практике это означает разбиение монолитных классов, использование интерфейсов, DI-контейнеров и слоистой архитектуры.
Итог: стремитесь к высокому cohesion и низкому coupling — это делает систему гибкой, тестируемой и устойчивой к изменениям.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию