intermediate
Defensive programming
Валидируйте untrusted boundaries и защищайте invariants, не закапывая normal flow под redundant checks.
Защитное программирование валидирует недоверенный ввод на границах — HTTP, очереди, user files — и проверяет инварианты внутри domain. Fail fast с ясными ошибками, не разносите испорченное состояние. Баланс: не каждой internal function нужны redundant null checks, если types и constructors гарантируют safety.
Schema validation (Zod, JSON Schema) на краях; ядро логики чистое.
На интервью: guards для API handler vs internal pure function.
Типовые ошибки: defensive noise закрывает happy path; ранний catch без контекста; только client validation.
Компромисс — избыточность и шум против меньшего числа загадочных падений в проде.
Чеклист:
- Валидация на system boundaries.
- Доверие internal contracts при enforcement.
- Fail fast с actionable errors.