소스코드리뷰(XXX) 소스코드는 간결하게 써라

[목차(도우미)]
하드웨어를 만드는 설계자는 CAD(Computer Aided Design)를 이용하여 2차원 제도 도면, 또는 3차원 도면을 그려서 전문 업체 사람에게 맡기게 된다. 가끔씩은 설계자가 직접 선반을 돌려서 깍아 보기도 하지만 숙련된 기술자가 만드는 것보다 좋은 것이 나온다고 보장 할 수는 없다.

소프트웨어는 설계자가 곧 개발자(코딩)가 되는 경우가 많다. 설계자가 개발자와 다른 사람이라고 해도 소프트웨어 기술에는 "숙련된 기술자"라는 개념이 거의 희박하다. 그리고 3차원 CAD가 나온 지도 오래되었지만 소프트웨어에는 3차원적인 개발 기법이 아직도 부족하다. 오히려 늘 중세적인 가내 수공업 스타일로 개발이 이루어 진다.

소프트웨어는 공학적 접근이 필요한 학문임에도 불구하고 예술적 측면이 존재하고 개발에 있어서는 더 예술적 작품이다! 공학과 예술의 차이를 간략하게 분류하자면 공학은 특정인의  손을 타지 않고 누구나 만들수 있는 프로세스라 할 수 있고 예술작품은 개성적인 특정인의 창작이라 할 수 있다. 누구나 붓을 들기만 하면 화가가 되는 것이 아니고 사진기를 눌렀다고 해서 사진작가가 되는 것이 아니다. 그러나 공학은 대량생산에 입각해서 누구나 제조 절차를 따라 만들면 불량율의 범위 안에서 동일한 제품을 만들수 있도록 공정을 확립해야 한다.
감 모양 떡
(감이 들어갔다는 감떡: 나무 줄기는 다시마로 만들었고 잎은 보통 떡이다.)
많은 개발 기법과 패턴이 연구되고 있지만 소프트웨어의 표준적 절차와 품질 수준이 떨어지는  이유는 무엇인가? 그중 하나의 이유를 들자면 소스코드를 너무 복잡하고 길게 작성하는 것이다. 소스코드를 길게 쓰게 되는 이유를 논하자면 이야기가 길어지기 때문에 다음 기회에 더 이야기하기로 하고, 간단히 말하자면 논리를 구현하지 않고 처리를 구현하기 때문에 소스코드가 장황하고 길어진다.

소스코드를 간결하게 쓰려고 노력해 보라. 한개의 함수가 한 화면(30줄)정도안에 들어가도록 하자는 추천도 있거니와 30줄 보다 짧은 10줄 정도의 간결한 함수군을 만들도록 하라. 작은 기능을 하는 함수군이 있으면 소스코드가 길어지지 않으며 마치 소설을 읽는 듯한 소스코드가 된다.

쌀을 익히면 밥이 되지만 작게 가루를 만들어 두면 떡을 만들수 있고 과자도 만들수 있다. 작은 함수가 모여 있으면 다양한 기능을 구현하기 위한 부품이 되지만 한 덩어리로 되어 있으면 쪼갤 수 없는 주조물(ingot)이 되어 버린다. 그것은 개발자 스스로도 다시 재현하지 못하는 소스 저장고의 예술작품이 되어 버린다.
by 금메달.아빠 on 2011. 2. 10. 00:39