SOLID
Суть
SOLID — пять принципов проектирования, сформулированных Робертом Мартином (акроним предложил Майкл Фезерс). Цель одна: код, который легко менять и тестировать, потому что изменения локализованы, а зависимости направлены на абстракции.
- S — Single Responsibility. У типа одна причина для изменения (один «актор», которому он служит).
UIViewController, который ходит в сеть, парсит JSON и форматирует даты, меняется по трём разным поводам — классический Massive View Controller. - O — Open/Closed. Новое поведение добавляется новым кодом (новый тип, новый конформанс протоколу), а не правкой существующего
switch. - L — Liskov Substitution. Подтип можно подставить вместо базового типа, и код, рассчитанный на базовый контракт, не сломается.
- I — Interface Segregation. Узкие протоколы вместо «толстых»: клиент не должен зависеть от методов, которые не использует. В UIKit это
UITableViewDataSourceиUITableViewDelegate— два протокола, а не один. - D — Dependency Inversion. Высокоуровневый модуль не зависит от низкоуровневого; оба зависят от абстракции, которой владеет верхний уровень.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep