같은 기능을 수행하는 프로그램을 작성해도 프로그래머에 따라  코딩하는 방법이 천차만별입니다. 때로 코딩이나 컴파일 되는 과정을 보면 그분의 성격까지도 알 수 있는데 완벽한 코딩은 없어도 분명 효율적인 방법은 있을 것입니다. 최근에 다른 분이 작성된 코드를 보다가 if문 대신에 switch문을 사용했더라면 더 이해하기 쉬운 코드였을 텐데하는 생각이 들더군요.

 

 

 

if 대신에 switch를 사용하면 코드가 더 간결해진다는 것은 제 생각이 아닙니다. 아주 오래 전에 어떤 분이 내 놓았느데  실제 사용해 보니 여러모로 장점이 있더군요. 가령 아래의 if 절 보다는,

 
if  ( 3 == ndx){ 
    .... 
 
} else if ( 100 == ndx){

    .... 

} else if ( 200 == ndx){
    .... 

} else  { 
    .... 
}
 

아래의 switch 문이 이해하기가 더 쉽습니다.

switch( ndx){
case 3   :
    .... 
    break;
case 100 :
    .... 
    break;
case 200 :
    .... 
    break;
default  :
    .... 
    break;
}
 

보기 쉬운 것 뿐만 아니라 if 절의 고질 버그인 == 를 = 로 사용하는 문제도 없어집니다. 아래의 코드는 항상 참이죠. 그래서 if 절에는 상수를 먼저 사용하는 습관을 기르기도 하는데 switch문을 사용하면 이런 걱정이 필요 없고 중복되는 ndx == 없이 비교 대상만 보이기 때문에 버그 발생 횟수도 줄일 수 있다고 생각됩니다.

if  ( ndx = 3){
 
    .... 
 
}

한가지 안타까운것은 조건에 문자열을 사용하지 못한다는 점이죠. switch문의 효율성 때문이겠습니다만, 때로 문자열도 되었으면 할 때가 있답니다. ^^