[책] 프로그래밍 패턴

2

프로그래밍 언어를 배우는 것에는 다양한 측면이 있습니다. 언어론, 컴파일러론, 운영체제론을 어느정도 정리하고 나면 소프트웨어공학, 아키텍쳐, 도메인별 지식을 쌓게 됩니다.

이 와중에서 언어별 특성을 익혀 코드를 작성하게 되는데 코드를 작성하는데도 많은 지식이 관여합니다. 알고리즘이나 자료구조는 문제를 해결하기 위한 방법론이라면 이에 못지 않게 객체지향개발, 함수형개발 등 전체적인 프로그램 기술 방식도 중요한 요소입니다.

오히려 직접 문제를 풀게 한다기 보다 그 문제를 바라보는 관점을 제공한다는 점에서 사고방식과 행동에 더욱 영향을 주게 됩니다.

과거부터 이 부분에 대한 꾸준한 연구를 통해 좋은 책들이 많이 나와있는데, 코드를 잘 작성하는 방법에 대한 책으로는 고전적인 solid code를 비롯해 CERT시리즈, code complete등이 있습니다(물론 그 외에도 코드를 주제로 한 수많은 역서와 집필서가 있습니다만)

켄트백옹이 쓴 구현패턴은 재밌게도 언어(특히 자바)의 각 구성요소가 어떤 의미를 갖고 언제 어떻게 쓰는게 좋을지를 패턴화 해보고 있습니다. “니네 언제 함수라는걸 쓴다고 생각하냐?” 같은 거죠. 내용이 매우 좋을 뿐 아니라 언어 구성요소를 바라보는 관점을 제시하기 때문에 소중한 책입니다.

지금 소개하는 프로그래밍 패턴이란 책은 비교적 최신에 출간된 책으로 구현패턴을 전개한 패턴이라고 해야할까요.. 굉장히 재밌는 책입니다.

단지 언어의 구성요소를 하나하나 분해해서 사용되는 패턴이나 의미를 설명하는 레벨이 아니라 특정 사상을 바탕으로 동일한 문제에 대해 33가지 다른 코드를 보여줍니다.

게다가 각 코딩 스타일에 이름과 특정을 명세화하여 인지하고 활용할 수 있게 해줍니다.

디자인패턴이 아키텍쳐에 대한 언어를 제공해주고 보다 추상화된 설계를 할 수 있게 도와줬다면 이 책은 코딩레벨에 있어 비슷한 역할을 합니다.

이 코드는 어떤 패턴으로 작성된 것이고 이렇게 작성된 형태는 장단점이 이렇다라는 인식체계를 제공하기 때문에 다음과 같은 일을 할 수 있게 됩니다.

  1. 그저 코드가 맘에 든다 아니다라는 차원이 아니라 구체적으로 어떤 패턴으로 작성된 코드라고 이름지을 수 있고 그 패턴의 일반적인 장단점으로 코드를 분석하고 평가할 수 있게 됩니다.
  2. 디자인패턴과 마찬가지로 그러한 코딩 스타일을 병합하고 연결하여 장점을 강화하고 단점을 보완하며 도메인에 잘 맞춘 코드를 만들어낼 수 있습니다.

즉 혼자 읽기 보다는 팀전체가 읽으면(외우면^^) 매우 도움이 된다는 거죠.

P.S
책 전체의 코드는 파이썬으로 되어있습니다. 파이썬을 익히기에도 좋은 책입니다.