Skip to content

if let Vs Guard else  #46

@zzangzzangguy

Description

@zzangzzangguy
구분 if let guard else
목적 옵셔널 값을 안전하게 추출하여 조건부로 코드 실행 옵셔널 값을 안전하게 추출하고 조건 불만족 시 빠르게 함수를 종료
사용 위치 함수 내 어디서든 사용 가능 주로 함수의 시작부분에서 사용하여 초기 조건을 검증
스코프 바인딩된 변수는 if 블록 내에서만 사용 가능 바인딩된 변수는 guard 이후의 코드 전체에서 사용 가능
가독성 중첩 사용 시 가독성 저하 가능 조건 불만족 시 명확하게 초기에 처리하여 가독성 향상
제어 흐름 else 블록에서 다른 로직 수행 가능 else 블록 내에서는 함수를 벗어나야 함 (예: return, continue, break, throw)
사용 조건부로 복잡한 로직을 수행할 때 사용 필수 조건을 검사하고 조건이 충족되지 않을 때 함수 종료 필요할 때 사용
장단점 장점: 특정 조건에서만 실행하려는 코드 블록에 적합
단점: 중첩되면 가독성이 떨어짐
장점: 코드의 안전성을 높이고 초기에 실패 조건을 명확히 처리
단점: 항상 함수를 종료하거나 루프를 벗어나야 함
예시 if let 사용: 닉네임이 있을 때만 출력 guard else 사용: 입력 검증 후 조건 불충족 시 함수 종료

예제

if let

func nickname(from 데이터: [String: String?]) {
    if let 별명 = 데이터["nickname"] {
        print("별명: \(별명)")
    } else {
        print("별명 제공 X.")
    }
}

guard else

func enter(input: String?) -> Bool {
    guard let 입력데이터 = input, !입력데이터.isEmpty else {
        print("유효하지 않은 입력.")
        return false
    }
    // 입력이 유효한 경우 추가 로직 수행
    return true
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions