iOS

[iOS] Guard 구문을 사용하는 이유

스벅 보안관 2024. 5. 22. 10:49

안녕하세요 스벅보안관입니다.

이번시간에는 Swift에서 자주 사용하는 Guard문에 대한 내용을 작성하려합니다.

 

Guard문이란?

guard문은 특정 조건이 만족되지 않을 경우, 실행을 중단하고 다른 코드를 실행할 수 있도록 하는 제어 구문입니다.

쉽게 말해, Swift에서 guard 문은 "문지기" 역할을 합니다. 어떤 조건이 맞는지 확인하고, 조건이 맞지 않으면 바로 "돌아가"라고 말하는 문입니다. 쉽게 말해서, "이 조건이 맞지 않으면 여기서 끝내고 나가자"라는 의미로 사용됩니다.

 

예시는 if문과 비교하여 다음과 같습니다.

 

  • if문의 경우
if let height = heightTextField.text{
	let result = "키 \(height)"
  	resultLabel.text = result
}

 

 

height의 범위가 제한적이게 되어 if문이 끝난 다음 코드에서는 height라는 상수를 인식할 수 없게 됩니다.

 

  • Guard문의 경우
guard let height = heightTextField.text else {
	resultLabel.text = "nil입니다"
	return
}
         
print(height)

 

guard문을 사용할 경우, else를 먼저 처리하는데 이를 Early Exit이라고 합니다.

이는 return에 대한 내용을 설정합니다.

guard문을 사용하면 변수 활용 범위 넓어지게 되어, 위와 같이 height를 인식할 수 있게 됩니다.

 

 

Guard문의 장점

guard 문을 사용하면 코드가 더 깔끔해지고,

조건이 맞지 않는 경우를 빨리 처리할 수 있어서 이해하기 쉽습니다 :)

 

Guard문의 한계점

장점만 가득할거 같던 Guard문에도 한계점은 분명히 존재합니다

 

1. 함수, 메서드, 루프 내에서만 사용 가능

guard 문은 return, break, continue, throw 같은 제어 전송 문을 필요로 하기 때문에, 반드시 함수, 메서드, 또는 루프 내에서만 사용할 수 있습니다.

 

2. 강제 종료가 필요

guard 문은 반드시 else 블록 내에서 현재 실행 흐름을 종료하는 문을 포함해야 합니다. 그렇지 않으면 컴파일 오류가 발생합니다. 이로 인해 단순히 조건에 따라 다른 작업을 수행하는 데는 적합하지 않을 수 있습니다.

 

3. 복잡한 조건 처리에는 부적합

guard 문은 단순한 조건 체크에는 유용하지만, 복잡한 조건을 처리하거나 여러 조건을 조합해야 하는 경우 if 문이 더 적합할 수 있습니다.

 

 

 

오늘의 결론

솔직히 guard문을 처음 배웠을 때, 약간 있어보이기도 하고 효율적이라 생각하여 이왕이면 guard문을 사용하는 쪽으로 개발을 진행했는데, 상황에 따라서 if문이 더 좋은 상황이 있다는 것을 유념하면서 개발해야겠다고 다짐합니다.

이제는 코드보면 guard문만 찾게 되지 않을까,,,ㅎ

'iOS' 카테고리의 다른 글

[iOS] TableViewController - [2]  (0) 2024.05.28
[iOS] TableViewController - [1]  (0) 2024.05.24
[iOS] GestureRecognizer  (0) 2024.05.20
[iOS] 버전별 UIButton의 차이  (0) 2024.05.15
[iOS] iOS개발의 기본적인 배경과 흐름(?)  (0) 2024.05.15