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.