Swift-guard

이재원·2024년 7월 6일
0

Swift

목록 보기
7/13
post-thumbnail

Swift의 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

profile
20학번 새내기^^(였음..)

0개의 댓글