컴퓨터/프로그래밍2011. 8. 10. 21:01


책이나 교육을 통하여 학습되거나 선대(?) 프로그래머들에게서 전해져 오는 것들 중에서 아무 생각없이 받아들여져 사용되고 있는 것들이 많을 것입니다. "이런 것은 꼭 이렇게 해야되고, 저렇게 하는 것은 절대로 안된다."라는 것과 같이 프로그래머로써의 불문율이 존재합니다. 하지만 실제로 맞닥뜨리게 되는 문제들에서 책이나 학교에서 배운 원칙(?)이 무조건 옳은가라는 의문이 드는 경우가 많습니다. 결국 시간이 흐르고 경험이 쌓이면서 그 원칙이라는 것들에 대하여 무조건 맞는가 라는 생각이 들기 시작했습니다. 그럼, 이런 불문율들은 무엇이 문제일까요, 나름 비판적인 생각들을 정리해 봤습니다.

1. 완벽한(?) 설계
  • 환상은 완벽한 설계를 통해서 완벽한 프로그램을 만든다.
  • 현실은 완벽한 설계란 있을 수 없습니다. 있다고 해도 현실적인 문제(구현하기 위한 스킬, 변덕스러운 요구사항 등)로 인하여 완벽하게 설계된 것과는 동떨어진 프로그램이 만들어지게 됩니다. 그리고 시간이 흐르면 흐를수록 코드들이 걸레가 되어 가는 것을 지켜볼 수 밖에 없습니다.

2. 재사용 가능한 만능 코드
  • 환상은 어디에서든 사용 가능한 만능 코드를 만든다.
  • 현실은 모든 조건, 모든 상황에 만족하는 코드는 있을 수 없습니다. 따라서 기존의 코드를 수정하면서 개선하는 것이 효율적이며 최선의 선택이 될 수 밖에 없습니다.

3. goto 문은 절대악(惡)
  • 편견은 goto문은 프로그램 코드에 있어서 절대악이다. goto문을 사용하는 프로그래머는 하수(下手)다.
  • goto문 한 줄로 간단하게 해결할 수 있는 것을 굳이 싫다면 복잡해지는 코드를 어떻게 할 것인가? goto문은 절대로 쓰면 안되는 것이 아니라 남발해서 사용하면 안되는 것입니다. 독(毒)도 적절히 사용하면 약(藥)이 될 때가 있습니다.

4. 매크로는 위험한 물건
  • 편견은 매크로는 코드를 읽기 어렵게 만들고 버그를 만들낼 소지가 많다.
  • 반복되는 코드를 장황하게 코딩하는 것 보다 간단하게 한 줄로 코딩할 수 있다면 더 좋지 않을까요? 길고 복잡한 코드를 매크로로 만드는 것이 아니라 한두줄의 코드를 짧고 간단하게 만드는 것이 목적입니다. 특히, 짧지만 실수가 많이 발생할 수 있는 코드, 사용 설명이 필요한 함수나 코드를 짧고 간단한 매크로로 설명을 대신할 수 있습니다.

5. 꼼꼼한 주석은 필수
  • 상식은 내가 만든 코드를 이해하기 쉽도록 주석을 다는 것은 필수다.
  • 잘 만들어진 코드는 주석이 필요 없습니다. 쉽게 이해할 수 없는 코드에 주석을 많이 단다고 이해가 쉬워지는 것은 아닙니다. 오히려 명확한 함수명이나 변수명이 더 도움이 됩니다.

6. 모든 컴파일러와 운영체제에서 가능한 호환성
  • 환상은 C/C++ 표준을 만족하면서 모든 컴파일러에서 컴파일 가능하고 모든 운영체제에서 실행가능한 코드를 만든다.
  • 현실은 대부분은 회사에서는 내부적으로 개발환경이 정해져 있습니다. 다양한 개발환경이 있다고 해도 각각 담당자가 따로 있게 마련입니다.

저만의 개똥철학일지 모르겠지만 앞으로 이런 것들을 시간나는데로 차근차근 정리해 보겠습니다. 다른 의견이 있다면 댓글 주셔도 좋습니다. 일리 있는 의견이라면 저도 참고하겠습니다.

Posted by jungtae17