소스코드리뷰(XXVII) 흉내 낸 소스는 금새 알수 있다

[목차(도우미)]

요즘은 여기저기서 공개된 라이센스 프리의 샘플 코드를 인터넷에서 검색하여 프로그램을 개발하는 것도 어려운 일이 아니게 되었다. 한글로 공개된 소스코드를 구하는 것은 비교적 어렵지만 영어로된 공개 샘플을 구하는 것은 제법 쓸만한 정보가 많이 있다. 직접 개발하는 것 보다 때로는 한나절, 또는 한두 시간 검색해서 얻은 소스코드를 사용하여 개발하는 것이 경우에 따라서는 빠른 생산성(어디까지나 결과적인 생산성)을 가져오기도 한다.

그러한 소스코드를 리뷰해 보면 가장 먼저 눈에 띄는 것이 소스코드의 일관성이 결여되어 있다는 점이다. 깨끗한 옷감으로 옷을 만든 것이 아닌 여기저기 누더기를 기워 만든 흔적이 역력하게 나타나있다. 또한 개발자 본인에게 이 처리가 무엇을 의미하는지 물어 보아도 모르는 경우가 많다. 그냥, 보고 베꼈을 뿐이므로 아는 바가 없는 것이다. 마치 시험 문제는 풀어서 입시에는 합격했지만 입학해보니 실력이 없어서 낙제하는 경우를 보는 것과 비슷하다.

성의있는 개발자는 자신이 복사해서 만든 코드를 분석해서, 흔히 역공학(Reverse Engineering)이라고 하는 방법을 도입하여 공부해 보기도 한다. 그래도 샘플 코드의 수준을 넘어서지 못한다.

소스코드의 변수명의 명명법에 일관성이 없는 것은 눈감아 주기로 하고 변수의 범위(Scope Rule)에 대해서 질문하기 시작하면 처음에는 아는 듯이 대답을 하기 시작하지만, 좀더 설계적 의도를 질문하면 대답이 막혀 버린다. 이런 점이 바로 복사한 소스 코드의 맹점이다. 샘플코드를 공개한 것은 단순한 처리 예를 들기 위한 것이지 설계를 설명하지 않는다. 그러므로 설계사상은 없이 흉내낸 소스코드를 보면 뒤죽박죽이며 객체지향적인 모양은 있어도 객체가 되어 있지 않다.

(선인장 속에서 꽃이 피다.)

오늘의 한마디: 공개된 프리 소스코드를 보고 무작정 베끼지 말고 설계적 관점으로 재구성하여 자기의 소스코드로 만들어라. 

by 금메달.아빠 on 2010. 12. 29. 00:24