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