guard
문 이해하기Swift로 코드를 작성하다 보면 guard
라는 키워드를 보게 될 때가 있죠 전체 코드 흐름을 이해하는 데 큰 어려움은 없지만, 정확히 모르면 활용하기 어렵다고 느낄 수 있어요 그래서 오늘 guard
에 대해 정리해 보려고 해요
guard
란guard
는 조건문을 체크하는 역할을 하는데, if
문과 매우 비슷한 제어문이에요 사용법은 다음과 같아요
guard "조건" else { 조건이 false일 때 실행될 구문 }
예를 들어 볼게요
// someValue가 0이 아닐 경우에만 출력
guard someValue != 0 else { return }
print(someValue)
위 예제를 보면 if
문과 매우 흡사하죠 그렇다면 둘 사이에 어떤 차이가 있을까요?좀 더 자세히 알아보도록 하겠습니다
if
문과 guard
문의 차이점먼저 if
문을 사용할 때를 볼게요
func printMessage(_ message: String?) {
if message == nil { return }
print(message!) // 이미 nil 검사를 했기 때문에 안전하게 사용 가능
}
printMessage(string)
이제 guard
문을 사용할 때를 볼까요
func printMessage(_ message: String?) {
guard message != nil else { return }
print(message!)
}
printMessage(string)
if
문에서는 "message가 nil이라면 반환하고, 아니면 message를 출력"이라는 느낌이라면, guard
문에서는 "message가 nil이 아니라면 message를 출력"이라고 자연스럽게 읽혀요 이렇게 보면 guard
문이 코드의 가독성을 높이는 데 도움이 된다는 걸 알 수 있습니다.
옵셔널 바인딩을 할 때도 guard
문이 유용하게 쓰입니다.
if
문을 사용할 때
func getName() -> String {
if let myInfo = loginMgr.myInfo {
// myInfo가 nil이 아닌 경우 처리
return "\(myInfo.userName)"
} else {
return "X"
}
}
guard
문을 사용할 때
func getName() -> String {
guard let myInfo = loginMgr.myInfo else {
return "X"
}
// myInfo가 nil이 아닌 경우 처리
return "\(myInfo.userName)"
}
이렇게 guard
문을 사용하면, 옵셔널을 안전하게 언래핑하면서 바로 원하는 동작을 실행할 수 있어요
물론 예제가 짧아서 익숙한 if
문을 써도 큰 차이가 없어 보일 수 있지만, 코드가 복잡해질수록 guard
문이 주는 이점이 더 명확해집니다.
결론적으로, 코드 가독성을 위해 guard
문을 사용하면 좋을 것 같아요
출처
https://velog.io/@youngking0914/iOSSwift-guard-문
https://brunch.co.kr/@robinkangwgmv/4