김종하 파수닷컴 선임

▲ 김종하 파수닷컴 선임 [PA사업팀 EA팀] http://story.wisedog.net/

[아이티데일리] 소스 코드는 양이 커지면 커질수록 복잡성은 커지고, 코드를 읽고 이해하기 어려워지며, 버그가 발생한 가능성이 커집니다. 이를 방지하고자 거의 모든 대형 소프트웨어 회사에서는 회사 내부적으로 혹은 외부의 코딩 표준을 따르고 있죠.

코딩 표준을 따른다고 해서 복잡성이 없어진다거나 버그가 사라지는 것은 아니지만, 버그의 가능성을 미연에 방지하고 코드의 일관성을 유지하여 유지보수에 드는 노력을 줄여주는 것은 사실입니다.

 

세상에 많은 C++ 코딩 표준이 있는데, 그 중 Todd Hoff라는 사람이 발표한 C++ 코딩 표준이 있습니다. 그렇게 잘 알려지지 않은 C++ 코딩 표준이긴 합니다만, 도입부에 있는 글이 너무 좋아서 일부를 소개해 봅니다.

Todd Hoff는 자신이 발표한 C++ 코딩 표준안에서 표준을 따를 때 생기는 장점과 단점을 적었습니다. Todd는 C++ 직접 코딩 표준을 작성했기 때문에 C++ 코딩 표준을 지켰을 때의 장점/단점만 언급했지만, 다른 프로그래밍 언어에 적용해도 틀린 말이 하나도 없죠.

코딩 표준을 지켰을 때의 장점

1. 프로그래머가 어떠한 코드든지 들여다 볼 수 있고 무엇이 어떻게 돌아가는지 알 수 있다
2. 새로운 사람이 빠르게 코드를 파악할 수 있다.
3. C++을 처음 접하는 사람에게 개인적인 스타일을 개발하지 않도록 한다.
4. C++을 처음 접하는 사람들에게 같은 실수를 여러 번 반복하지 않게 해준다.
5. 일관성있는 환경에서 좀 더 실수를 적게 해준다.
6. 프로그래머는 공통의 적을 가지게 된다 :-)

코딩 표준을 지켰을 때의 단점

1. C++를 이해하지 못한 사람이 표준을 만들면, 그 표준은 대개 바보스럽다.
2. 표준은 대개 바보스럽다. 왜냐하면 내가 뭘해야할지 말하지 않기 때문이다.
3. 표준은 창의성을 감소시킨다.
4. 사람들이 일관성이 있는 이상 표준은 불필요하다.
5. 표준은 너무 구조를 강제한다.
6. 사람들은 표준을 어떠한 방법으로든 무시한다.
7. 표준은 NIH(not invented here, 자신이 만든게 아닌 것은 배척하는 태도 및 행동)의 원인이 되기도 한다. 새로운 코드나 다른 곳에서 빌려온 코드는 표준을 따르지 않았기 때문이다.

단점 중에는 1번이 가장 인상적입니다. 국내 기업에게 코딩 표준이라는 것은 대부분 코드 컨벤션 관련된 내용이거나 좀 더 신경을 쓴 곳이라면 기존의 코딩 표준에서 자신의 회사에 알맞게 인용한 것이 대부분입니다.

이 코딩 표준을 개발 부서에서 만드는 경우도 있지만 많은 경우 SE(Software Engineering) 부서에서 만드는데, 이 때 코딩 표준을 만드시는 분은 반드시 규칙 하나 하나에 대해서 확실하게 알고 넘어가야 합니다. 개발자들은 (본능적으로?) 규칙에 얽매이는 것을 그리 좋아하지 않기 때문에, 도입 시 '이 규칙을 사용하면 어떤 이득이 있다'라고 확실하게 설득시켜야지 그렇지 않으면 코딩 표준은 유야무야 될 가능성이 높습니다.

단점 1번처럼 생각해서 '뭣도 모르는 친구들이 할 일 없어서 만든 귀찮은 일' 정도로 치부될 수 있기 때문이죠. 어설프게 만들거나 개발자를 설득시키지 못하면... 음... 결과는 비참해지죠.

한 가지 더! 코딩 표준을 만들면 반드시 자동으로 체크해줄 수 있는 도구가 있어야합니다. 예를 들면 정적 분석 도구 말이지요. 개발단계부터 소스코드 상의 보안약점을 최소화 할 수 있는 제대로 된 진단도구가 없다면 ROI가 안 나올 뿐더러 개발자들이 코딩 표준을 안 지킬 확률이 훨씬 높아집니다.

 


해당 글은 파수닷컴에서 아이티데일리 블로그 게재용으로 제공한 콘텐츠입니다.
저작권은 파수닷컴 측에 있으며, 무단전제 및 복제를 금합니다.
원문출처 : http://blog.fasoo.com/80205592547

저작권자 © 아이티데일리 무단전재 및 재배포 금지