Guard clauses

로직을 수행하기 전에 사전조건이 만족되는지 미리 검사하기. 타이딩 중 하나.

예를 들어 이런 코드를…

if (condition0)
  if (!condition1)
    doSomething()

…이렇게 바꾸는 것.

if (!condition0) return
if (condition1) return

doSomething()

하지만 7-8개가 넘는 가드가 있는 루틴이라면 다른 조치가 필요할 수 있다.

한편, 함수 하나에 하나의 return만 있는 게 좋다는 주장에 대해:

The “rule” about having a single return for a routine came from the days of FORTRAN, where a single routine could have multiple entry and exit points. It was nearly impossible to debug such code. You couldn’t tell what statements were executed. Code with guard clauses is easier to analyze because the preconditions are explicit. —Tidy first? A personal exercise in empirical software design

Swift

스위프트는 가드를 명시적으로 지원한다.

guard condition else {
  statements
}

TypeScript

타입스크립트에서는 user-defined type predicate과 type guard를 이용해서 타입 추론을 도울 수 있다.1

Footnotes

  1. typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates

2024 © ak