Признак хорошо спроектированного контракта (будь то интерфейс, сигнатура, абстрактный класс, фасад, тип, API…) — это когда:
• Понятно, как использовать, не заглядывая в исходники. Достаточно имен и, в крайнем случае, тестов или примеров.
• Не требует трассировки вызовов в реализации контракта. Всё очевидно на уровне интерфейса.
• Ошибки локализуются в 1 шаг, без анализа длинных цепочек вызовов.
• Следует LoD (Law of Demeter) и принципу "Do not talk to strangers", ограничивая ненужные зависимости.
• Использует осмысленное именование, которое отражает суть и минимизирует когнитивную нагрузку.
Post #1765
3.27K
- 👍 37
- 💯 2
- ❤ 1
- 🔥 1
- 😢 1