티스토리 뷰

1. 옵셔널 바인딩 

 

guard라 하면 어떤 것이 가장 먼저 떠오르시나요?

 

저는 옵셔널 바인딩에서의 guard let 구문이 가장 먼저 떠오르는데요 ! ! !

 

먼저 옵셔널 바인딩에서의 guard에 대해 간단하게 살펴볼게요!

 

 

Optional String의 파라미터를 가지는 함수를 하나 만들었습니다.

 

첫 번째 이미지에서 함수를 호출하니 입력한 email을 Optional 상태로 받았습니다.

 

두번째 이미지에서는 guard let 구문을 통해 옵셔널 바인딩을 하여 안전하게 email을 받을 수 있었습니다.

 

guard let

 

  • 옵셔널을 벗겼을 때 nil이면 더 이상 코드를 실행시키지 않겠다는 의미가 강함 -> nil이 아닐 때만 관심을 갖겠다.
  • 선언된 변수를 아래문장에서 사용 가능 (동일한 스코프로 취급) 

 

이러한 특징을 갖고 쓰는 guard문을 활용한 옵셔널 바인딩입니다.

 

그렇다면 애플 공식 문서에서 guard를 살펴보겠습니다.

 

guard 조건 else {
	// 조건이 false 이면 else 구문이 실행되고
    return or throw or break 를 통해 이 후 코드를 실행하지 않도록 한다.
}

 

 

간단하게 설명하자면 아래와 같이 말 할 수 있을 것입니다!

 

  • 뭔가를 검사하여 그 다음에 오는 코드를 실행할지 말지 결정 하는 것
  •  guard 문에 주어진 조건문이 거짓일 때 구문이 실행됨
사실 옵셔널 바인딩 뿐만 아니라 위와 같은 특징으로 조건문에서도 guard가 자주 사용됩니다! 

 

지금부터는 조건문에서의 guard를 살펴볼게요!

 

조건문에서의 guard

 

위의 예시는 중첩을 활용한 if 조건문입니다. (&& 연산자를 사용하면 되지만 예시를 들기위해 .. 이해해주세요 . .)

 

이메일 3글자 초과 && 비밀번호 4글자 초과 && 비밀번호 체크 5글자 초과 --> 로그인 성공을 하는 로직입니다.

(한 줄로 가능하지만 길게 . . .)

 

위에 예시는 정말 간단한 예시지만 실제 앱을 만들면서 if문 안에 if문을 여러번 중첩에서 사용하는 일이 정말 많습니다 ㅠ.ㅠ

 

그러다보면 에러 처리하기 굉장히 불편하기도 하고 로직이 꼬여버리는 경우도 많더라구요 . . .

 

 

하지만 guard를 사용한다면 코드의 중첩을 피하고 가독성을 높일 수 있습니다.

 

먼저 작성했던 if 중첩과 같은 동작을 하는 코드입니다.

 

중첩을 피하고 굉장히 보기 깔끔합니다! (한 줄로도 가능!)

 

else 중괄호 안에는 조건이 만족하지 않으면 그대로 종료되고 순서대로 조건이 맞는다면 return true에서 동작이 실행됩니다.

 

 다시 정리하자면 

 

  •  if문과 달리 조건이 늘어날수록 발생하는 코드 중첩을 줄임
  • else문을 먼저 배치 -> 먼저 조건을 판별하여 조기 종료(early exit)
  •  조건을 만족하는 경우 코드가 다음 줄로 넘어가서 계속 실행

 

  이렇게 정리할 수 있겠네요!

 

글을 작성하면서 . . 

주로 옵셔널 바인딩을 하면서 guard 구문을 많이 사용했었습니다.

하지만 조건문에서 다시금 공부하면서 코드의 중첩을 피하고 가독성을 높이기 위해 guard 구문을 많이 사용한다는 사실을 깨달았습니다..!

 실제 프로젝트에 적용한다면 유용하게 쓰일 것 같습니다 ! 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함