더북(TheBook)

실행 실험도 도움이 되며, 특히 작고 간단한 테스트를 돌린다면 유용하다. 하지만 생각하지 않고 코드를 읽어보지 않고 실행 실험을 반복한다면 프로그램이 제대로 실행될 때까지 무작위로 수정하는 과정이 되고 만다. 나는 이를 무작위 행보(random walk) 프로그래밍 패턴이라고 부른다. 말할 필요도 없겠지만 무작위 행보 프로그래밍은 시간이 오래 걸린다.

생각할 시간을 가져야 한다. 디버깅은 실험 과학과 비슷하다. 무엇이 문제일지에 대한 가설 하나는 세워야 한다. 둘 이상의 가능성이 있다면 하나씩 제거하는 테스트를 생각해봐야 한다.

오류가 너무 많거나 수정하려는 코드가 지나치게 크고 복잡하다면 아무리 좋은 디버깅 기법이라도 실패하고 만다. 때로는 한발 뒤로 물러나 동작하고 이해하는 상태까지 프로그램을 단순하게 만드는 것이 가장 좋은 선택이 된다.

초급 프로그래머라면 설령 잘못된 코드일지라도 코드 한 줄을 지우려하지 않기 때문에 한발 뒤로 물러나는 것을 내키지 않아 한다. 프로그램을 다른 파일로 복사한 다음에 정리를 시작하면 기분이 조금 나아질 것이다. 그러고 나서 코드 조각들을 한 번에 하나씩 되돌려본다.

어려운 버그를 찾는 작업은 읽기, 실행하기, 깊이 생각하기, 물러나기가 필요하다. 한 가지 방법으로 막혔다면 다른 방법을 시도해봐야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.