코딩의 기술 - 오즈 모리하루 지음, 윤인성 옮김/한빛미디어 |
'서평' 카테고리의 다른 글
셰익스피어 인간학 (0) | 2018.12.25 |
---|---|
아주 큰 스케치북: 오리기+찢기 (0) | 2017.11.24 |
7가지 동시성 모델 (0) | 2017.10.31 |
[나는 리뷰어다] 또다른 '슈돌' - 아빠육아 (0) | 2017.08.14 |
[나는 리뷰어다] 마인크래프트 슈퍼 건축 레시피 (0) | 2017.08.14 |
코딩의 기술 - 오즈 모리하루 지음, 윤인성 옮김/한빛미디어 |
셰익스피어 인간학 (0) | 2018.12.25 |
---|---|
아주 큰 스케치북: 오리기+찢기 (0) | 2017.11.24 |
7가지 동시성 모델 (0) | 2017.10.31 |
[나는 리뷰어다] 또다른 '슈돌' - 아빠육아 (0) | 2017.08.14 |
[나는 리뷰어다] 마인크래프트 슈퍼 건축 레시피 (0) | 2017.08.14 |
|
리팩토링은 마틴 파울러가 쓴 SE의 고전 중 고전으로 우리 나라에도 2002년 번역서가 나올 정도로 그 출판 연도가 오래되었다. 이 책은 비디오 대여점의 관리 소프트웨어를 자바 기반으로 작성하면서 발생하는 코드상의 여러 논리 오류나 모순을 기능을 변경하지 않으면서 내부 구조를 개선하는 전형적인 리팩토링 튜토리얼이다. 너무나 유명한 책이기 때문에 책 이름이 보통명사 같이 활용되고 있는 점 또한 특색이다.
|
이 책은 2002년 대청사에서 번역서가 나왔다가 절판된 이후 만 10년 만에 새로운 번역으로 한빛미디어에서 출판하였으며, 번역서 두 권을 비교해 보건데 두 번역서 모두 일부 번역이 위트 있지만 오역도 일부 있는 등 장단이 있는 만큼 최신본을 구매하는 것이 현실적으로 해답이란 생각이다.
사실 이 책을 리뷰하면서 꼭 같이 언급하고 싶은 책이 있어, 리뷰를 미뤄왔다. 바로
2012/12/25 - [서평] - '리펙토링'보다 쉽게 리펙토링하기 에서 리뷰한
'The Art of Readable Code'이다.
이 책 리뷰의 대부분을 위 책과 비교할 텐데 그렇다고 어느 책이 더 좋다거나 나쁘다는 의미는 아니고 내가 또는 우리가 보기에 가장 좋은 방법이 무엇이냐를 찾기 위한 과정에서 나온 리뷰라는 점을 미리 알려둔다.
우선, 본 책은 java기반의 언어로 쓰여진 책이다. 물론 코드의 기초는 다른 언어들도 대동소이하고, 리팩토링의 개념은 얼마든지 응용하여 사용할 수 있지만 아무래도 자바 특유의 prefix들을 java를 접해본 경험이 많지 않은 사람들로써는 어색한 것이 사실이기도 하다. 이러한 면에서는 '읽기 좋은 코드가 좋은 코드다'가 더 쉬운 접근성을 제공한다고 볼 수 있다.
한편, 본 책은 비디오 대여점 관리 프로그램을 예로 하고 있기 때문에 스토리에 기반한 책 전개가 장점이다. 즉, 코드 부분의 난해함을 제외하면 죽 훓어 읽기에 무리가 없을 정도로 스토리가 있다는 것인데, 이 부분은 위 책보다 장점이다. 다만, 이러한 책의 특성상 일독한 이후에도 수시로 책을 찾아볼 수 있는데, 이를 위해서 각 리팩토링 패턴에 대한 인덱스를 제공하고는 있지만, 리팩토링 패턴의 제목만으로는 활용에 필요한 정보가 제약되는 점이 단점으로 작용한다. 이에 비해 전 책에서는 변수, 함수, 주석, 조건문, 클래스 등 개발 요소에 맞추어 각 기법을 설명하고 있기 때문에 뒤에 찾아보기가 더 수월할 수 있다.
두 책 모두 일장일단이 있는 만큼 같이 보고 두 책의 장점만 취하면 좋겠다는 생각도 해 본다. 다만, 우리가 너무~ 시간에 쪼들리는 분야이다 보니 두 책을 순서대로 읽어야 겠다면 일단 'The Art of Readable Code'를 읽어 기초를 다지고 실무에 활용한 다음, 응용할 만큼의 실력이 받쳐줄 때 이 책 '리팩토링'을 읽어 생각을 정리하면 좋겠다는 생각이다. 이 두 책 모두 필독서로 권하고 싶다.
차례대로 읽었으면 더 좋았을 매그레 7번째 소설 (0) | 2013.01.31 |
---|---|
매그레 시리즈의 시작, '수상한 라트이바인' (0) | 2012.12.25 |
'리펙토링'보다 쉽게 리펙토링하기 (0) | 2012.12.25 |
이루어지지 않은 미래 '모피아'를 읽고. (0) | 2012.12.25 |
2006년의 자기개발서, 2012년에 읽히다. 관심 (0) | 2012.12.18 |
|
11월 내 책상에는 프로그램 개발에 관한 두 책이 놓여져 있는데, '리펙토링'과 이 책이다.
우선 이 책을 이야기해야 할 것 같다. 원제인 'The Art of Readable Code'는 책의 주제와 내용을 가장 잘 표현해 주는 것 같은데, 번역서의 제목인 '읽기 좋은 코드가 좋은 코드다' 라는 제목도 우리가 이 시점에 이 책을 읽어야 하는 이유와도 일맥상통하기에 아주 좋은 번역이라고 하겠다.
저자 2명은 구글에서 현업 프로그래머로 활동하는 사람으로 자신들이 구글에서 현재도 지키고 있는 프로그래밍 원리를 몇 가지 분류에 따라 나누어 책을 썼다. 이 책의 주요 내용과 특징을 살펴보면,
첫째, 이 책은 크게 보면 리펙토링(프로그램의 기능을 바꾸지 않고 내부를 수정하여 성능/가독성 등을 좋게 하는 일)에 관한 책이고, 또한 일부의 내용은 secure coding(프로그램의 내부를 robust하게 구현하여 어떠한 예외에도 프로그램이 이상동작하지 않게 하는 개발 방법)과도 연결되어 있다. 우리는 bussiness logic에는 무척 강하고, 우리 분야에서 우리만큼 잘 하는 국내 경쟁사는 없다고 해도 과언이 아니다. 그런데, 설계 기술과 개발 기술도 그러할까? 이 고민에서 올 한해를 시작한 나는 연말에 이르러서야 어렴풋이 실마리를 잡을 수 있었고, 그 한 축에 이 책이 있다. 즉, 아주 좋은 재료를 그냥 얼기설기 엮을 것이 아니라 씨줄과 날줄을 구분하여 무늬도 아름답게 그리고 조직도 촘촘하게 할 기술적 토대를 쌓는 것 역시 네트워크 기반의 프로그래밍을 잘 하는 것 못지 않게 중요하는 것을 이 책을 통해서도 일부 체험할 수 있는 것이다.
둘째, 기존 리펙토링 서적(앞으로 리뷰할 그 책)과는 달리 클래스 기반(정확히는 객체 기반)의 프로그램에서 패턴을 찾아 개선하는 방식이라기 보단 좀 더 우리 실정에 맞게 -C언어의 절차적 순서기반 프로그램이나 python같은 인터프맅터 언어에서도- 변수의 이름 변경, 함수의 파라메터 선정, 주석의 활용, 분기(if..else)의 조건문 순서 변경 등을 통해 얻는 이점으로 시작하여 점차 고급 언어로의 적용으로 책 방향을 설정하였다. 실제로 예제도 C, pythom, java, C++ 등이 등장하며 이 때문에 고급언어에 익숙하지 않은 우리 C 개발자들도 쉽게 코드 개선을 따라 할 수 있을 것으로 기대된다.
셋째, 책 제목 처럼 궁극적으로 읽기 쉬운 코드로 작성하여 좋은 점을 단순히 프로그램의 성능 개선, 기능 개선에 두는 것이 아니라 그것을 운용하고 활용하는 사람에 맞추고 있다는 것이다. 기능을 개발한 담당자가 프로그램의 생명주기(life cycle)동안 계속 그 부분을 담당할 수도 없고, 회사에 남으리라는 보장도 없는 상황에서 너무 안이하게 여겼던 가독성을 코드의 품질을 평가하는 수준으로 높여보자는 것이다. 이를 통해 담당자 본인이 아니더라도 어느 누가 이 코드를 보더라도 초기 개발자의 의도를 파악하고 의도에 맞게 유지보수를 할 수 있도록 하자는 것이다.
위 세 가지 특징은 이 책이 우리의 필독서가 되게 하는 데 큰 장점이라 생각한다. 고전 '리펙토링'과 함께 두고두고 돌려가면서 익힐 일이다.
매그레 시리즈의 시작, '수상한 라트이바인' (0) | 2012.12.25 |
---|---|
고전 리팩토링을 읽다 (0) | 2012.12.25 |
이루어지지 않은 미래 '모피아'를 읽고. (0) | 2012.12.25 |
2006년의 자기개발서, 2012년에 읽히다. 관심 (0) | 2012.12.18 |
고성국의 정치in (0) | 2012.12.06 |