버그가 발생했을 때 아무리 열심히 코드를 쳐다봐도 도통 뭐가 문제인지 모를 때가 있습니다. 특히 자신이 작성한 코드일수록 코드를 꼼꼼하게 보기가 힘듭니다. 마치 자기 글을 자기가 퇴고하기 어려운 것과 마찬가지 원리입니다. 이럴 때 하염없이 코드만 쳐다보고 있으면 시간을 흘러가고 몸은 지쳐가고 정신은 피폐해지며 정확한 원인을 못찾은 채 코드를 이리저리 수정하다 보면 버그를 없애기는커녕 새로운 버그를 추가하고 있는 슬픈 자화상을 마주하게 됩니다.
저는 이럴 때는 문제가 있을 것으로 추측되는 코드를 하드 카피(종이)로 뽑아서 봅니다. 컴퓨터 모니터의 해상도(resolution)가 높아고 가독성이 높은 글꼴[각주 1]을 사용해도 여전히 종이는 가장 우수한 가독성을 뽐내는 미디엄입니다. 자신이 작성한 코드라 할지라도 종이로 뽑아서 보면 전혀 새로운 맛이 있기 때문에 그냥 간과해 버릴 수 있는 부분을 집어낼 수 있었던 경우가 많이 있었습니다. 특히 퇴근하면서 지하철에 앉아 내가 작성한 코드를 찬찬히 읽어보는 것은 코드 리뷰에 아주 큰 도움이 되었습니다.
물론 문제점이 없지는 않습니다. 종이는 ctags[각주 2]처럼 코드를 추적할 수도 없고 특정 문자열을 쉽게 찾아낼 수도 없습니다. 하지만 본인이 작성한 코드의 오류를 찾는 경우에는 이런 부분은 크게 문제가 되지 않기 때문에 괜찮습니다. vim 사용자라면 머리도 식혈 겸 :hardcopy를 치시고 프린트된 여러분의 코드를 마음 껏 파헤쳐 보시기 바랍니다.
[각주 1] 코딩 작업 시 폰트로 BitStream Vera Sans Mono를 추천합니다.
[각주 2] ctags는 코드 분석을 도와주는 도구입니다. 일례로 vim+ctags 조합을 이용하면 함수나 매크로가 정의된 파일로 쉽게 이동할 수 있습니다.