퍼포마의 야근근절을 위한 코딩

조건문 - 개념, 활용 가능 영역, 그리고 주의점

인생은스트러글 2022. 11. 23. 07:35

[목차]

0. 여는 말

1. 조건문의 개념

2. 조건문의 활용 가능 영역

3. 조건문 사용 시 주의점

4. 맺는 말

 


 

0. 여는 말

 

이번 글에서는 '본격적인 코딩 전에 알면 좋을 2가지 개념' 중 2번째인 '조건문(=if문)'에 대해 얘기해 보려 합니다.
(첫 번째는 '반복문'이며, 자세한 내용이 궁금하신 분들은 아래 2개의 글들을 참고해 주세요 :) )

 

반복문 - 개념, 활용방안, 그리고 장단점

[목차] 0. 여는 말 1. 반복문의 개념 2. 반복문의 활용 가능 영역 3. 반복문의 장점 4. 반복문의 단점 5. 맺는 말 0. 여는 말 이번 글과 다음 글에서는 '반복문'에 대해 얘기해 보려 합니다. 반복문은

lifeisstruggle.tistory.com

 

반복문 - 초보자들이 주의해야 할 2가지 실수

[목차] 0. 여는 말 1. 실수1: 잘못 설정된 반복 범위 2. 실수2: 무한 루프(loop) 3. 맺는 말 0. 여는 말 지난 글에서 '반복문의 개념, 활용 가능 영역, 그리고 장단점'에 대해 알아 보았는데요 (아래 글

lifeisstruggle.tistory.com


조건문은 엑셀을 사용하시는 N년차 직장인이라면 익숙하실 IF 함수와 매우 유사하지만, 엑셀의 IF 함수보다 가독성도 좋고 속도도 빠릅니다. 
IF 함수가 엑셀에서 가장 많이 쓰이는 함수들 중 하나인 것처럼, 코딩에서도 조건문은 아주 활용도가 높은 구문입니다.
많은 직장인 분들께서 엑셀의 IF 함수를 통해 이미 익숙하신 개념일 것이기 때문에, 길게 설명하지 않고 이 하나의 글만으로(!) 조건문의 개념활용 가능 영역, 그리고 사용 시 주의점 1가지에 대해 다뤄보겠습니다.

글 시작하겠습니다!

 


 

1. 조건문의 개념

 

여러 상황들에 대한 시나리오를 기획하고, 상황에 따라 그에 매칭되는 시나리오대로 작업을 수행하는 구문

 

조건문이란 한 문장으로 말하면 '예상되는 경우들을 분류하여 각각에 대해 짜 놓았던 시나리오대로 작업을 수행하는 구문' 이라고 정의할 수 있습니다.
경우의 수가 2가지인 경우 if와 else를, 3가지 이상인 경우 if, elif, else를 사용하여 구현할 수 있습니다.

 

경우의 수가 2가지인 경우, if와 else만으로 코드를 짤 수 있습니다

 

경우의 수가 3가지인 경우, if와 else, 그리고 elif를 추가로 사용하여 코드를 짤 수 있습니다

 

경우의 수가 4가지 이상인 경우, 처음과 끝에 if와 else를, 그리고 그 사이 경우들에는 elif를 사용하여 코드를 짤 수 있습니다

 


 

2. 조건문의 활용 가능 영역 

 

한 마디로, '무궁무진' 합니다

 

반복문 파트에서도 동일한 말씀을 드렸었는데요, 조건문 또한 그 활용 가능 영역은 '무궁무진'합니다. '경우에 따라 다른 기능을 수행한다' 라는 개념이 적용된다면 '대부분' '이론 상' 적용 가능합니다.

 

반복문에서와 동일하게 '대부분 이론 상 적용 가능하다'라고 말씀을 드렸는데요, 그 이유 또한 거의 동일합니다. 

 

먼저, '대부분'이라고 표현한 이유는, '저도 아직 개발의 극히 일부만을 경험한 초보이기 때문에, 감히 전부에 대해 논할 수 없다고 생각하기 때문' 입니다. 다만 코딩을 했던 지난 1년 반 정도의 경험 동안 위 경우에 해당되는데 조건문을 적용하지 못했던 경우는 없었던 것 같아요 :)

 

다음으로 '이론 상'이라고 표현한 이유는 '현실에서는 예상치 못한 제약 조건이 생길 가능성이 항상 존재하기 때문' 입니다. 하지만 반복문과는 다르게 조건문에서는, 1년 반 동안 코딩하면서 조건문을 사용할 수 없는 제약 조건이 발생했던 경우는 딱히 없었던 것 같네요 :)

 


 

3. 조건문 사용 시 주의점

 

상황을 분류할 때 가능한 MECE 해야 합니다! (= 상호 배제, 전체 포괄)

 

조건문을 사용하실 때에는 한 가지만 주의하셔도 조건문에서 발생 가능한 대부분의 에러는 예방할 수 있다고 생각합니다.
바로 '분류한 경우들이 가능한 서로 MECE해야 한다'는 것입니다.
('MECE'라는 개념을 아시는 독자 분들께는 이렇게 설명 드리는 것이 더 빠르게 와 닿으실 것 같아, 굳이 해당 용어를 사용해 봤습니다 ^_^;;)
다시 말하면, '분류한 경우들 중 일부 범위가 겹치거나 누락되는 경우가 없어야 한다'는 것입니다.

 

'가능한' MECE해야 합니다! (심심해서 김종민의 '가능한' 짤을 넣어봤습니다 ㅎ;;)

 

이것이 무슨 얘기인지, 2가지 예시와 함께 더 자세히 살펴보겠습니다.

 

먼저, 첫 번째 예시는 '분류한 경우들 중 일부 범위가 겹칠 때' 입니다.

 

예시 1: 분류한 경우들 중 일부 범위가 겹칠 때

 

위 예시처럼 분류한 경우들 간에 일부 범위가 겹치는 경우, 더 상위에 입력된 코드에 따라 결과값을 출력합니다.
예시를 보시면, 동일한 a값에 동일한 코드임에도 불구하고, 경우의 배열 순서에 따라 다른 결과값을 출력합니다.
(첫 번째에서는 "a는 1 이상"을, 두 번째에서는 "a는 1 이하"를 출력합니다)
같은 입력값에 같은 코드임에도 불구하고, 경우의 배치 순서에 따라 결과값이 달라지기 때문에, 이는 안정적이고 올바른 코드라고 보기 어렵습니다.

 

두 번째 예시는 '분류한 경우들 전체를 합쳐도 일부 범위가 누락되었을 때' 입니다.

 

예시 2: 분류한 경우들 전체를 합쳐도 일부 범위가 포함되지 않을 때

 

위 예시처럼 어느 경우에도 특정 범위를 포함하지 않는 경우, 아무런 결과도 출력되지 않습니다.
(참고로, '아무것도 출력되지 않았다'와 '에러가 발생했다'는 다른 개념입니다. 전자는 실행은 이상 없이 되었으나 반환하는 결과가 없는 것이고, 후자는 실행부터 정상적으로 되지 않은 상태를 의미합니다)
이 경우 또한, 입력값은 있는데 의도와 다르게 출력값이 없고, 에러도 발생하지 않아 문제를 인지하기도 어렵기 때문에, 바람직한 코드라고 보기 어렵습니다.
이러한 경우, 아래 이미지처럼 '내가 분류한 경우들 어디에도 포함되지 않는 경우가 생기면 일부러 에러를 발생시키는' 등의 방식으로 코드를 개선해 볼 수 있습니다.

 

앞선 '예시 2'와 동일한 상황이지만, raise문을 추가해 일부러 에러를 유발, 문제가 있음을 인지하기 쉽게 코드를 개선했습니다

 


 

4. 맺는 말

 

이번 글에서는 간략하게 '조건문(=if문)'에 대해 얘기해 보았는데요,
엑셀에 익숙하신 분들이라면 오늘 내용은 이전 글의 반복문에 비해 이해하기가 좀 더 수월하셨을 것 같습니다.
만약 이해가 가지 않거나 막히는 부분들이 있으시다면, 그것 역시 여러분의 실력 문제가 아니라 전적으로 설명이 미흡한 저의 탓이니, 혼자 고민하다가 포기하지 마시고 댓글 등으로 막히는 부분을 문의 주세요. 최대한 이해가 되시도록 추가 설명을 드리겠습니다 :) 

 

다음 글에서는 쉬어갈 겸, 'URL의 구조'에 대해 다뤄보려 합니다.
퍼포먼스 마케팅을 한다면 URL, 그리고 utm 파라미터 등의 개념을 피해갈 수 없을 텐데요, 이 부분에 대해 명확히 개념을 잡으실 수 있도록 글을 써 보겠습니다.
이 부분에 대한 개념이 명확히 잡히신다면, 나중에 업무를 하시면서 성과 추적을 위해 파라미터를 달거나, 혹은 웹사이트 크롤링을 해야 할 때, 훨씬 수월하게 작업하실 수 있으실 것입니다 :)

 

그러면 오늘 글은 여기서 마치겠습니다.
오늘도 긴 글 읽으시느라 고생 많으셨습니다!

 

리들의 스트러글(struggle)하는 현생, 화이팅입니다!
반응형