사용한 양식에 대해 설득력 있는 전후 코드를 제공할 수 없다면 엉터리 약을 파는 것이다.
- 데이비드 하이네마이어 핸슨
데이비드 하이네마이어 핸슨의 말에 전적으로 동감합니다.
프로그래밍 기법을 제안하려면 그 제안이 이전에 나왔던 방법보다 나은 점을 간단히 입증할 수 있어야 합니다. 사실 관계를 논하는 전후 접근법으로 기존 코드와 새 코드를 바로 비교할 수 있습니다. 그런 후에야 어느 방법이 더 나은지 사실에 근거한 결정을 내릴 수 있습니다.
프로그래밍 방법을 배울 때도 마찬가지입니다. 자바에서 어떻게 코딩하는지 알려면 훌륭한 코드와 형편없는 코드를 비교하는 방법이 무척 유용합니다.
6년 이상 대학에서 프로그래밍을 가르쳐왔습니다. 강의를 몇 번 하고 나면 항상 이렇게 묻는 학생들이 있습니다. "코딩 기술을 더 늘리려면 어떡해야 하나요?" 질문을 던진 학생들은 프로그래밍 과제에서 두각을 나타냈으므로 나는 "전문가가 만든 코드를 읽어보세요."라는 판에 박힌 조언을 해주었습니다.
솔직히 그런 조언은 별 도움이 되지 못했습니다. 오픈 소스 소프트웨어 세상에는 코드가 넘쳐나는데 어디서부터 읽어야 좋을지 말해주기 어렵습니다. 실제로 프로젝트 내 전문 코드와 맞닥뜨린 초보자는 그 복잡도에 쉽게 압도당합니다. 게다가 어느 코드의 품질이 정말 뛰어난지 어떻게 알 수 있겠어요? 설사 알 수 있더라도 겨우 몇 달 동안 프로그래밍해본 경험으로 고품질의 코드와 결함이 있는 코드를 어떻게 구분하겠어요?
드디어 이 책 [자바 코딩의 기술]이 나설 차례입니다. 이 책은 올바른 방향으로 읽어 나가도록 안내해주는 동반자입니다. 잘못된 코드와 훌륭한 코드를 비교해 훌륭한 자바 코드 작성법을 배울 수 있습니다. 장담컨대 수년 간 학계 수강생과 업계 전문가, 오픈 소스 프로젝트 기여자가 작성한 코드를 리뷰하며 나쁜 코드와 훌륭한 코드를 충분히 보아왔습니다.
그래서 앞에서 설명한 전후 접근법을 사용합니다. 이 책에서는 70개의 전후 코드 조각을 제공합니다. 자바 프로그래밍을 시작한 초보자가 실력을 향상시킬 수 있는 코드 조각이죠. 학부생에게 자바를 가르치면서 그런 코드를 찾아냈습니다. 모두 프로그래밍 과제를 고쳐줄 때 보았던 코드입니다.
이 책의 설명 방식은 간단합니다. 코드 조각을 제시한 후 무엇이 왜 잘못되었는지 설명합니다. 이어서 코드를 더 나은 해법으로 어떻게 바꾸는지 보여줍니다.