코딩의 기술 - 8점
오즈 모리하루 지음, 윤인성 옮김/한빛미디어

개발을 하다 보면, 새로운 설계와 개발 환경, 더 나은 품질을 위한 기술 등 실 개발 내용을 넘어서는 내용들에게도 관심이 가게 된다.
사실 이러한 내용은 개발 결과물을 더 내실 있게 하고, 기능 변화에 유연하게 대처할 수 있게 하는 등 장점이 존재하지만, 
현업 개발자들에게는 주어진 일정과 제한된 리소스 등의 이유로 등한시 하게 되는 것이 현실이다.
그레도 모름지기 개발을 '업'으로 삼고 있는 사람들이라면, 자신의 창작물이 좀 더 견고하고 나중에 봐도 세련되게 보이길 바라기 마련이고
현업과 추구하는 목표 사이의 적절한 조화를 이루는 것이 오랜 기간 개발자로 성공할 수 있는 비결일 것이다.

이번에 읽게 된 '코딩의 기술' 이란 책은 게임 개발에서 오랜 기간 현업 개발자를 훈련시켜 온 저자가 쓴 책으로 일본 도서 특유의 친절한 설명과 현업에 유용한 팁을 알려주는 실용서이다. 
책은 3부로 구성되어 개발 시 유지 보수가 쉽도록 하는 "코딩 컨벤션", "객체 지향 개발", "개발 품질의 정량화" 등을 주제로 다루고 있다. 비슷하게 일본 저자의 책이며 임베디드 환경, C 언어를 이용한 개발에서 객체지향, 디자인 패턴, XP, TDD, 리펙토링, CI 등을 설명한 "모던 C 언어 프로그래밍" 이란 책이다. 같이 읽었더니 유사한 주제를 다루고 있어 복습도 되고 좋았다.

두 책은 각각 "게임 개발"과 "임베디드 개발"에서 개발 유연성 및 개발 품질을 유지하기 위한 여러 가지 방법을 설명하는데, 실제 현업의 개발 주제를 예제로 설명하다 보니, 이론서보다 깊이는 얋지만 실행 효과가 피부에 와 닿는 정도는 더 크다.

개발 방법론에 있어서는 아무래도 "코딩의 기술"이 C++을 이용하여 객체화된 코드를 다루기 때문에 이해가 빠른 편이며, "모던 C 언어 프로그래밍"은 C를 객체화하여 설명하는데, 구현이 불가능하지는 않지만 아무래도 객체 개념을 차용하여 응용하는 측면이 강해서 코드 복잡도가 높은 편이다.

오랜만에 현업에 바로 적용 할 수 있는 실용서를 읽어서 즐겁고 유익했다.


리팩토링 - 코드 품질을 개선하는 객체지향 사고법
국내도서>컴퓨터/인터넷
저자 : 마틴 파울러(Martin Fowler) / 김지원역
출판 : 한빛미디어 2012.11.09
상세보기
 

리팩토링은 마틴 파울러가 쓴 SE의 고전 중 고전으로 우리 나라에도 2002년 번역서가 나올 정도로 그 출판 연도가 오래되었다. 이 책은 비디오 대여점의 관리 소프트웨어를 자바 기반으로 작성하면서 발생하는 코드상의 여러 논리 오류나 모순을 기능을 변경하지 않으면서 내부 구조를 개선하는 전형적인 리팩토링 튜토리얼이다. 너무나 유명한 책이기 때문에 책 이름이 보통명사 같이 활용되고 있는 점 또한 특색이다. 

 

Refactoring 리팩토링
국내도서>컴퓨터/인터넷
저자 : Martin Fowler,켄트 벡
출판 : 대청미디어 2002.03.15
상세보기

 

이 책은 2002년 대청사에서 번역서가 나왔다가 절판된 이후 만 10년 만에 새로운 번역으로 한빛미디어에서 출판하였으며, 번역서 두 권을 비교해 보건데 두 번역서 모두 일부 번역이 위트 있지만 오역도 일부 있는 등 장단이 있는 만큼 최신본을 구매하는 것이 현실적으로 해답이란 생각이다.

사실 이 책을 리뷰하면서 꼭 같이 언급하고 싶은 책이 있어, 리뷰를 미뤄왔다. 바로

2012/12/25 - [서평] - '리펙토링'보다 쉽게 리펙토링하기 에서 리뷰한

 

읽기 좋은 코드가 좋은 코드다더스틴 보즈웰,트레버 파우커
상세보기

 

'The Art of Readable Code'이다.

 

이 책 리뷰의 대부분을 위 책과 비교할 텐데 그렇다고 어느 책이 더 좋다거나 나쁘다는 의미는 아니고 내가 또는 우리가 보기에 가장 좋은 방법이 무엇이냐를 찾기 위한 과정에서 나온 리뷰라는 점을 미리 알려둔다.

 

우선, 본 책은 java기반의 언어로 쓰여진 책이다. 물론 코드의 기초는 다른 언어들도 대동소이하고, 리팩토링의 개념은 얼마든지 응용하여 사용할 수 있지만 아무래도 자바 특유의 prefix들을 java를 접해본 경험이 많지 않은 사람들로써는 어색한 것이 사실이기도 하다. 이러한 면에서는 '읽기 좋은 코드가 좋은 코드다'가 더 쉬운 접근성을 제공한다고 볼 수 있다.

 

한편, 본 책은 비디오 대여점 관리 프로그램을 예로 하고 있기 때문에 스토리에 기반한 책 전개가 장점이다. 즉, 코드 부분의 난해함을 제외하면 죽 훓어 읽기에 무리가 없을 정도로 스토리가 있다는 것인데, 이 부분은 위 책보다 장점이다. 다만, 이러한 책의 특성상 일독한 이후에도 수시로 책을 찾아볼 수 있는데, 이를 위해서 각 리팩토링 패턴에 대한 인덱스를 제공하고는 있지만, 리팩토링 패턴의 제목만으로는 활용에 필요한 정보가 제약되는 점이 단점으로 작용한다. 이에 비해 전 책에서는 변수, 함수, 주석, 조건문, 클래스 등 개발 요소에 맞추어 각 기법을 설명하고 있기 때문에 뒤에 찾아보기가 더 수월할 수 있다.

 

두 책 모두 일장일단이 있는 만큼 같이 보고 두 책의 장점만 취하면 좋겠다는 생각도 해 본다. 다만, 우리가 너무~ 시간에 쪼들리는 분야이다 보니 두 책을 순서대로 읽어야 겠다면 일단 'The Art of Readable Code'를 읽어 기초를 다지고 실무에 활용한 다음, 응용할 만큼의 실력이 받쳐줄 때 이 책 '리팩토링'을 읽어 생각을 정리하면 좋겠다는 생각이다. 이 두 책 모두 필독서로 권하고 싶다.

 

읽기 좋은 코드가 좋은 코드다
국내도서>컴퓨터/인터넷
저자 : 더스틴 보즈웰,트레버 파우커 / 임백준역
출판 : 한빛미디어 2012.04.10
상세보기

11월 내 책상에는 프로그램 개발에 관한 두 책이 놓여져 있는데, '리펙토링'과 이 책이다.

우선 이 책을 이야기해야 할 것 같다. 원제인 'The Art of Readable Code'는 책의 주제와 내용을 가장 잘 표현해 주는 것 같은데, 번역서의 제목인 '읽기 좋은 코드가 좋은 코드다' 라는 제목도 우리가 이 시점에 이 책을 읽어야 하는 이유와도 일맥상통하기에 아주 좋은 번역이라고 하겠다.

 

저자 2명은 구글에서 현업 프로그래머로 활동하는 사람으로 자신들이 구글에서 현재도 지키고 있는 프로그래밍 원리를 몇 가지 분류에 따라 나누어 책을 썼다. 이 책의 주요 내용과 특징을 살펴보면,

 

첫째, 이 책은 크게 보면 리펙토링(프로그램의 기능을 바꾸지 않고 내부를 수정하여 성능/가독성 등을 좋게 하는 일)에 관한 책이고, 또한 일부의 내용은 secure coding(프로그램의 내부를 robust하게 구현하여 어떠한 예외에도 프로그램이 이상동작하지 않게 하는 개발 방법)과도 연결되어 있다. 우리는 bussiness logic에는 무척 강하고, 우리 분야에서 우리만큼 잘 하는 국내 경쟁사는 없다고 해도 과언이 아니다. 그런데, 설계 기술과 개발 기술도 그러할까? 이 고민에서 올 한해를 시작한 나는 연말에 이르러서야 어렴풋이 실마리를 잡을 수 있었고, 그 한 축에 이 책이 있다. 즉, 아주 좋은 재료를 그냥 얼기설기 엮을 것이 아니라 씨줄과 날줄을 구분하여 무늬도 아름답게 그리고 조직도 촘촘하게 할 기술적 토대를 쌓는 것 역시 네트워크 기반의 프로그래밍을 잘 하는 것 못지 않게 중요하는 것을 이 책을 통해서도 일부 체험할 수 있는 것이다.

 

둘째, 기존 리펙토링 서적(앞으로 리뷰할 그 책)과는 달리 클래스 기반(정확히는 객체 기반)의 프로그램에서 패턴을 찾아 개선하는 방식이라기 보단 좀 더 우리 실정에 맞게 -C언어의 절차적 순서기반 프로그램이나 python같은 인터프맅터 언어에서도- 변수의 이름 변경, 함수의 파라메터 선정, 주석의 활용, 분기(if..else)의 조건문 순서 변경 등을 통해 얻는 이점으로 시작하여 점차 고급 언어로의 적용으로 책 방향을 설정하였다. 실제로 예제도 C, pythom, java, C++ 등이 등장하며 이 때문에 고급언어에 익숙하지 않은 우리 C 개발자들도 쉽게 코드 개선을 따라 할 수 있을 것으로 기대된다.

 

셋째, 책 제목 처럼 궁극적으로 읽기 쉬운 코드로 작성하여 좋은 점을 단순히 프로그램의 성능 개선, 기능 개선에 두는 것이 아니라 그것을 운용하고 활용하는 사람에 맞추고 있다는 것이다. 기능을 개발한 담당자가 프로그램의 생명주기(life cycle)동안 계속 그 부분을 담당할 수도 없고, 회사에 남으리라는 보장도 없는 상황에서 너무 안이하게 여겼던 가독성을 코드의 품질을 평가하는 수준으로 높여보자는 것이다. 이를 통해 담당자 본인이 아니더라도 어느 누가 이 코드를 보더라도 초기 개발자의 의도를 파악하고 의도에 맞게 유지보수를 할 수 있도록 하자는 것이다.

 

위 세 가지 특징은 이 책이 우리의 필독서가 되게 하는 데 큰 장점이라 생각한다. 고전 '리펙토링'과 함께 두고두고 돌려가면서 익힐 일이다.

+ Recent posts