C++ API 디자인 - API Design for C++
마틴 레디 지음, 천호민 옮김 / 지&선(지앤선) / 2014년 1월
평점 :
품절


프로그래밍을 하면 반드시 사용하게 되는 API를 늘 사용만 했지, 그것을 만드는 사람 입장에서는 생각을 해보지 못했던 것 같다. 다른 코드와 다르게 나만 사용하는 것이 아니라 다른 사람들의 프로그램에도 영향을 미치는 역할을 한다고 생각해 보니 단순한 기능 구현을 넘어 매우 신중한 설계가 필요할 것이라는 생각이 문득 든다. 특히나 대규모 서버를 가동하는 애플리케이션이라면 더더욱 말이다.

 

이 책은 그런 서비스를 하는 많은 프로그램들 제작할 때 고려해야 하는 사항들에 대해서 논하고 있다.

사실 굳이 API를 제작하는 것이 아니더라도 평소 프로그래밍을 할 때 그러한 신중한 습관이 고품질의 프로그램을 만들어 낼 것이다.

 

API를 만드는 것은 조금 차이가 있겠지만, 일반 코드를 만들 때의 과정과 큰 차이를 가르진 않는다. 하지만 이 책에서 전체를 관통하는 하나는 바로 미래를 대비한 디자인이다.

 

'Chapter 4 설계'에서 스타트업의 경우 소프트웨어의 빠른 출시가 절실하게 되는데, 그 때문에 주석과 문서화, 테스트를 생략하는 케이스를 예로 들면서, 소프트웨어가 기업의 중요한 성공요소라면 오히려 코드를 사용하기 쉽고 안정되기 만들어야 한다고 하고 문서화 역시 잘 해두는 것이 첫 번째 목표여야 한다고 조언한다. '호미로 막을 것 나중에는 가래로 막는다'는 속담이 아마도 이럴 때 쓰는 경우가 아닐까. 프로그래밍을 하다보면 그러한 댓가가 나중에는 반드시 나타난다. 업계에서는 속된 말로 누가 싼 X 치운다고 이야기 한다. 어떻게 마감에 맞추려다 보니 엉망진창 코드로 만들어진 외양은 그럴 듯해 보이지만 건축물처럼 개관을 하지만, 철골도 부실하고 나중에는 천장에서 물이 새는 경우처럼 다양한 문제가 발생한다. 물론 원인의 첫 번째가 무리한 마감일이겠다.

 

사실 코드 디자인은 API든 일반 프로그래밍이든 매우 중요한 사안이다. 성능 문제가 당장 중요하진 않기에 최적화를 하려고 애를 쓰진 않아도 된다면 그렇게 하겠지만 나중에 라도 발생할 수 있을 가능성을 내포하고 있다면 수정할 수 있어야 한다. 'Chapter 7 성능'의 경우 성능 문제가 나타날 때를 대비해 인터페이스 성능 최적화 방법을 소개한다. 

 

이 밖에도 싱글톤, 팩토리 메서드, 옵저버 같은 유명한 디자인 패턴이나 버전관리, 문서화, 테스트 등 설계부터 테스트 까지 프로그램의 전반에 걸치는 과정을 망라하여 담은 책이다. API를 만들지 않더라도 그러한 정교한 설계 능력은 누구나 필요하다.

 

C++ 프로그래머라면 전체를 조망하는 이 책을 한 번쯤 읽어볼 것을 권한다.


댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo