공부/C#

[C#]if문 vs switch문

개발의 피 2023. 12. 5. 20:20

- 출처 : C# 코딩의 기술: 기본편, 1.2 if와 switch에 관한 오해 

이건 저번에 작성했던 break문 사용 이유 + 제어 이동에 관련된 내용 

https://aeju.tistory.com/237

 

[C#]switch - break문 사용 이유

몇 달 전에 가볍게 읽었던 책을 다시 보고 있다 그 전날은 대충 훑어 보고, 어제 자기 전에는 제대로 다시 봤는데... 처음 눈에 들어오는 부분이 있었고... 여태 궁금하지만 몰랐던 이유를 알게되

aeju.tistory.com

 

*한 줄 요약 : 다른 언어는 몰라도, C#에서는 switch문이 안 좋을 이유가 x*

무조건 if문 여러 개를 사용해서 구현하지 말고, switch문이 필요한 경우엔 switch문을 사용하는 것이 낫다 ! 

 

if문 switch문
조건 판정문 (조건식 하나 -> 판정할 수 있는 조건도 하나)
처리 : 조건이 성립할 때 / 성립하지 않을 때 (두 가지 결과 뿐)
다중 조건 판정 
여러 개의 값을 이용해 조건을 분기 
if(조건식)
{
    조건 성립 시 실행
}

else
성립하지 않을 때 실행 

switch(식)
{
    case 식1:
        식의 값이 1일 때 실행하는 처리
        break;
    case 식2:
        식의 값이 2일 때 실행하는 처리
        break;
        ...
    default:
        어떤 값에도 해당하지 않을 때 실행하는 처리
        break;
}

 

일반적으로(다른 언어에서) switch문이 가독성이 떨어지고 버그가 발생하기 쉬운 것은 맞지만,

C#에서만큼은 무조건 피해야 할 대상 x

 

1. C는 문자열을 판정할 수 없지만, C#에서는 문자열을 판정할 수 있다 

2. 제어 이동을 허용하지 않는다 = break문 생략 불가능 

-> 코드 고민해서 해석할 필요가 없기 때문에, 코드 가독성 떨어지지 않고

break문 생략하면, 컴파일 에러 발생하기 때문에 버그가 쉽게 발생하지도 않음 

 

if문과 switch문을 비교했을 때, if문의 코드양이 더 적지만 switch문이 더 좋은 이유 

판정식 3개 (if - else if - else ) : 요구 사항을 만족시키기에 너무 과한 방식  (cf. switch문 : 판정식 1개)

 

의문 : 과하면서 강력한 방법이면 오히려 좋은 것이 아닌가? 

정답 : 아무런 관련이 없는 식도 작성할 수 있다는 강력함 = 오히려 버그가 발생할 수 있는 여지를 주는 것

switch문 사용 -> 오로지 식 하나로 값을 분류하기 때문에, 버그가 발생할 수 있는 여지도 줄어드는 것 ! 

 

 

'공부 > C#' 카테고리의 다른 글

[C#/궁금증]기본 데이터 형식(15가지)는 전부 값형식일까?  (0) 2023.12.17
[C#/LINQ]First vs. FirstOrDefault  (0) 2023.12.10
[C#]var 사용법  (1) 2023.11.29
[C#]readonly vs. const  (1) 2023.11.27
[C#]static(정적) 필드, 메소드  (0) 2023.11.12