우연히 Junior, Senior, Lazy 프로그래머를 구분하는 

코딩에 대한 글을 보았다. 

소스코드를 보면 아래와 같다. 

물론 EDW519를 보다가 생각이 났다. 

====

Junior Programmer:
if (m==1){Month="January")}
if (m==2){Month="February")}
if (m==3){Month="March")}
if (m==4){Month="April")}
if (m==5){Month="May")}
if (m==6){Month="June")}
if (m==7){Month="July")}
if (m==8){Month="August")}
if (m==9){Month="September")}
if (m==10){Month="October")}
if (m==11){Month="November")}
if (m==12){Month="December")}
---------------------------------------------------------------
Senior Programmer:
switch(m)
{
case 1:
Month = "January"
break;
case 2:
Month = "February"
break;
case 3:
Month = "March"
break;
case 4:
Month = "April"
break;
case 5:
Month = "May"
break;
case 6:
Month = "June"
break;
case 7:
Month = "July"
break;
case 8:
Month = "August"
break;
case 9:
Month = "September"
break;
case 10:
Month = "October"
break;
case 11:
Month = "November"
break;
case 12:
Month = "December"
break;
default:
Month = "unknown"
}
---------------------------------------------------------------
Lazy Programmer:
MonthNames == ["","January","February","March",...]
Month = MonthNames[m]


====

위의 글을 볼때만 해도 음... 보기가 깔끔해서 그런건가 싶었다. 

뭔가 성능적인 문제도 있겠지만..

아래의 글을 보면서 난 아직도 형편없나보다 싶어서 찾게 되었다. 


Signs You’re a Crappy Programmer

==> You execute too much code because you don’t know the difference between “if” and “case”.


매우 많은 코드를 실행한다면 당신은 형편없는 프로그래머, 

왜냐면, 당신은 if와 case의 차이를 모르기때문에..


그렇다.. 난 여태 if와 case문의 차이점에 대해서 알려는 시도조차 안했다. OTL..


그래서 구글링으로 뒤적이다보니 아래의 링크에 아주 기가 막히게 설명을 해두었다.

http://blog.naver.com/PostView.nhn?blogId=kki2406&logNo=80041410085

완전 감사한마음으로 읽었고 요약하면 대략 이렇다. 


1. 성능을 향상시키느냐, 메모리 사용량을 줄이느냐의 문제가 있다.

  -  성능이 중요한 경우 : switch case문을 사용

  -  메모리 사용을 줄이고자 하는 경우 : if else문을 사용


2. swtich-case문의 특성

  - case값은 가급적 순차적으로 감소 혹은 증가하는 것이 메모리 관리면에서 좋다. 

  - case문의 개수가 4 미만이면 jump table을 사용하지 않고 그 이상이면 jump table을 사용한다.

    물론 사용하지 않는것이 성능면에서 좋을것 같다.

  - 1,2,3,1000 이런 경우에는 1,2,3에 대한 table을 생성하고 진입할 때, 1000은 따로 분기함.

  - gcc 4.4.3의 경우에는 table을 생성하지 않는다..는 추가내용까지


위의 내용은 링크된 블로그에 assembly 코드를 가지고 설명을 해뒀는데 

참.. 볼수록 잘 썼다. ㅋㅋ


반응형

'Language > C' 카테고리의 다른 글

extern 선언에 대한 쉬운설명  (1880) 2012.12.07
fwrite함수 예제  (758) 2012.11.06
바이너리 파일전송 C언어 예제 -클라이언트-  (467) 2012.10.18
바이너리 파일전송 C언어 예제 -서버-  (158) 2012.10.18
itoa 함수 예제  (468) 2012.10.17

+ Recent posts