본문 바로가기

Programming/iOS

[Swift] if..return을 알기 쉽게 대체한 guard 조건문

반응형
안녕하세요 명동콜링입니다.

이번에는 Swift에서 다른 언어와는 다르게 아주 간편하게 if... return 형태를 식별할 수 있는 guard 조건문에 대해 간단하게 알아 보려 합니다.

먼저 if... return의 형태가 어떤 것이냐 하면 다음과 같은 형태가 되겠습니다.
다음 예시는 간단하게 Playground에서 String값을 식별하여 return 처리를 한 예를 들었습니다.

이처럼 if 안에 있는 조건에 해당되는 데이터들은 더이상 메소드의 내용을 진행하지 못하고 팅겨주는 역할을 하는 흔히 개발자들이 필터링 할 때 사용하는 조건문 형태가 되겠습니다.

이 if ... return 형태의 조건문을 Swift에서는 guard 조건문이라는 것으로 따로 구분을 지어서 만들게 되었습니다. 그렇게 어렵지 않은데다가 왜 따로 구분을 지어놓은 지는 쓰는 사람은 이해가 가지 않지만, 아마도 좀 더 한눈에 들어올 수 있는게 요즘 코딩의 추세이다 보니 그에 맞춰 바꾸지 않았나 생각이 됩니다.

그럼 저 위의 형태를 guard 조건문으로 바꾸면 어떻게 될까, 바로 다음과 같다
형태는 guard [조건] else .... return 형식으로 바뀌었다. 형태 외에 if와 다른 점이라 함은 조건식의 형태와 return이 꼭 들어가야 한다는 점이다.

 전자에 대해 설명하자면 else라는 지시어가 있기 때문에 if와는 다르게 무조건 guard안으로 들어오는 조건문이 아닌 '무조건 통과하는 조건문'을 사용해야한다. 
 else, 우리가 조건문에서 알고있는 "그렇지 않으면..."의 뜻을 가지고 있는 지시어이기 때문에 guard 조건문 안에 조건과 조합이 되면 if... return에서 쓰이는 조건과 같은 뜻으로 되어집니다. 그래서 조건식을 작성할 때에는 if ... return에서 쓰일 때와 반대되는, 무조건 통과할 것 같은 조건을 사용하면 되겠습니다. 여러 가지의 조건이 있을 때는 if와 함께 중첩되어 사용한다면 더욱 식별이 잘되는 코드를 작성할 수 있을 것 입니다.

 후자는, guard 조건문은 메소드 내 필터링을 하기 위해 생겼다고 해도 무방하기 때문에 중간에 메소드를 빠져나오기 위한 return 이 필수로 들어가야 된다는 것입니다. return이 들어가지 않게 된다면 바로 빨간 느낌표가 뜨기 때문에 꼭 guard 조건문 안에는 return을 넣어주시면 되겠습니다.

 어느 방식으로 코딩을 하느냐에 따라 개인차가 있지만 저는 Swift 개발을 할 때에는 guard 조건문을 자주 사용하는 편입니다. if와는 그래도 다른 속성을 가지고 있기 때문에 확실히 눈에 들어온다는 장점이 좋다고 생각합니다. 물론 if ... return 을 더 편하게 느끼는 분들도 있지만요.

 어디까지나 개인의 스타일은 유지하면서 다른 것도 수용해보면 좋지 않을까요!