[C#] if else VS switch 어떤것을 사용할까?

|

[C#] if else VS switch 어떤것을 사용할까?



두 구문은 거의 비슷한 기능을 해서 혼용해서 사용하는 경우가 많습니다. 거의 구분을 안하고 상황에 따라서

기분 내키는 대로 쓰고 있는데, 저는 보통 몇개 안되는 string 타입을 비교 할때는 IF/ELSE를 사용하고 열거형 상수(enum)를 사용할 때는 SWITCH를 사용해서 코딩을 합니다.


하지만 두 구문에는 분명히 차이가 있습니다. 어떤 상황에서 어떤 구문을 선택하는 것이 좋을까요?


1.속도면에서는 몇개 안되는(5개 이하) 아이템을 비교할 때는  속도차이가 거의 없습니다. 하지만 아이템이 많아지면 SWITCH를 써야합니다. 5개 이상의 아이템을 비교 할때는 SWITCH는 해쉬 테이블이나 룩업 테이블을 구현해서 아이템에 접근하기 때문에 어떤 아이템 이든지 접속시간은 같습니다. 즉 아이템이 5개 이상일때는 SWITCH가 빠릅니다.( O(1) : O(1) describes an algorithm that will always execute in the same time (or space) regardless of the size of the input data set. )


IF/ELSE 는 조건에 맞을 때까지 비교를 해서 중간에 맞으면 빠져나오므로 최대 아이템 갯수만큼의 비교 시간이 걸릴 수 있습니다.( O(N) : O(N) describes an algorithm whose performance will grow linearly and in direct proportion to the size of the input data set.  )


2.가독성면에서도 3개 이상이 되면 SWITCH 를 사용하는 것이 좋습니다. 

3.유지보수면에서도 SWITCH는 새로 추가되는 아이템이 있으면 확장하기 좋습니다.


개인적으로는 2개 내지 3개 정도면 IF/ELSE가 가독성 면에서 유리 하며 5개 이상이면 SWITCH를 사용하는 것이 좋은 것 같습니다. 


결론은,

아이템이 5개 미만 : IF / ESLE

아이템이 5개 이상 : SWITCH





And