Secreta

프로그래밍 철학 본문

Engineering/Note

프로그래밍 철학

준♡ 2010.03.26 09:28

C/C++, C++/CLI, C#, Assembly language

 

VHDL, Verilog HDL, MatLab

 

실력이 있는지는 잘 모르겠지만

아무튼 제가 사용하는 혹은 할 줄 아는 언어나 프로그램은 이 정도 밖에 안되는군요 ...

그 외에 마이크로프로세서 계열은 ...

거의 C 나 Assembly니 앞서 언급한 범주 안에 들어간다고 볼 수 있으니 제외 하도록 하면 말이지요

 

앞서 제가 다룰 줄 아는 언어들의 종류와 무관하게

저의 프로그래밍 스타일은 ... 앞서 AES C# 소스 코드를 올릴때 설명 한 것처럼

 

되도록 알아 보기 좋게 ... 하는것이 모토입니다.

 

사실 어렵게, 혹은 화려하게 코딩하는게 몸에 배질 않아서 (그만큼 숙련이 부족한거지요) 하는

일종의 핑계였지만,

 

최근에 화려한 것 만이 반드시 좋은건 아니다 라는 진리를 다시금 배웠습니다.

제가 참고한 블로그가 굉장히 유용하기에 소개를 합니다.

 

아래는 http://xevious7.com/87 의 글을 인용한 것입니다.

 

[소스 1]

unsigned uCycleCheckBox(unsigned uCur) {

       

        return ((uCur <=1) ? (uCur?0:1) : (uCur==4)?2:(uCur+1));

}

 

우선 간단 명료하면서 완벽해 보이는 코드지만, 가독성이 떨어져 이해하는데 시간이 필요합니다

 

[소스 2]

unsigned uCycleCheckBox(unsigned uCur) {

 

        unsigned uRet;

 

        if (uCur <= 1) {

               if (uCur != 0)

                       uRet = 0;

               else

                       uRet = 1;

        } else {

               if (uCur == 4)

                       uRet = 2;

               else

                       uRet = uCur + 1;

        }

       

        return (uRet);

}

 

제가 가장 좋아하는 스타일! 우선 가독성이 좋습니다.

위의 원문에서 필자는 [소스 1]은  가독성문제 뿐만아니라 더 이상 수정할 여지가 없는 형태가 되지만

[소스 2]는 다른 알고리즘을 생각하여 아래의 [소스 3]을 생성할 수 있다고 말합니다.

 

[소스 3]

unsigned uCycleCheckBox(unsigned uCur) {

       

        ASSERT(uCur >=0 && uCur <= 4);

       

        if(uCur == 1)

               return (0);

        if(uCur == 4)

               return (2);

       

        return( uCur + 1);

}

 

또한 [소스 3]에서 플로우 중심의 알고리즘에 벗어나

좀더 다른각도로 바라보면 아래와 같은 [소스 4]를 만들어 낼 수 있다 합니다.

 

[소스 4]

unsigned uCycleCheckBox(unsigned uCur) {

       

        static const unsigned uNextState[] = { 1,0,3,4,2 };

       

        ASSERT(uCur >= 0 && uCur <= 4);

        return(uNextState[uCur]);

}

 

마지막으로 필자는 거짓 화려함에 빠지지 말고,

유용한 알고리즘을 만들어 내도록 해야 한다고 주장합니다.

 

간만에 좋은걸 배운 느낌이네요 ...

제가 결코 ... 프로그램을 발로 하는게 아니라는 것을 새삼 강조하면서 ... (?????)

이 글을 마무리 합니다.

 

한 줄 요약 : 프로그래밍 철학 - 겉으로 보이는 화려함이 전부는 아니다 -

 

 (이전 블로그 reinliebe.textcube.com의 서비스 종료와 더불어 원문을 그대로 옮겨옵니다)

'Engineering > Note' 카테고리의 다른 글

Online TEX  (3) 2010.10.04
프로그래밍 철학  (3) 2010.03.26
3 Comments
댓글쓰기 폼