프로그래머스에서 제한조건을 설정하면서 If
또는 Switch
구문을 사용하여 할 수도 있었지만 굳이 Guard
구문을 사용한 이유를 설명하려고 한다.
우리는 iOS 앱을 만들면서 guard
구문을 안쓰는 사람이 거의 없는 것인데, 다른 프로그래밍 언어에는 없는 guard
구문이 무엇이고 왜 사용하는지 알아보고자 한다.
Guard
구문은 하나 이상의 조건이 충족되지 않을 때 범위 밖으로 프로그램 제어를 전송하기 위해 사용한다.
그렇기에 애플리케이션에서 조건이 맞지 않아 오류가 발생할 수 있는 상황에 자주 쓰이게 된다.
If
구문과 Guard
구문을 의미로 비교해보면
If
구문은 "조건이 충족하면 함수를 실행"이면 Guard
구문은 "조건이 충족하지 않으면 끝내거나 예외 처리" 로 설명할 수 있다.
그렇기에 Guard
구문은 예외 처리에 초점이 맞춰져 있어 오류로 인한 비정상적인 종료가 일어나서는 안 되는 애플리케이션에서 많이 사용하게 된다.
Guard
구문은 다음의 형식을 가진다.
// Guard.swift
guard condition (Bool 타입 값) else {
statements (예외 사항 실행문)
}
Guard
구문의 조건의 값의 타입(condition)은 Bool
타입이거나 Bool
로 브릿지 된 타입이어야 한다.
조건은 옵셔널 바인딩 선언일 수도 있다.
If
구문과의 차이점은 Guard
구문에 예외 처리를 위한 else
절은 필수이고 종료하는 전환 명령어
return
break
continue
throw
구문 중 하나를 사용하여 프로그램 제어를 전송해야 한다.
따라서 Guard
구문은 예외 처리에 사용하는 조건문으로
예외 처리 상황에 가독성 높은 코드를 작성하는데 도움을 준다.