레이블이 한빛미디어인 게시물을 표시합니다. 모든 게시물 표시
레이블이 한빛미디어인 게시물을 표시합니다. 모든 게시물 표시

2012년 5월 30일 수요일

읽기 좋은 코드가 좋은 코드다 (한빛미디어)



"읽기 쉬운 100줄의 코드는 읽기 어려운 50줄의 코드에 비해서 훨씬 낫다"

회사의 프로젝트를 수행하면서 직접 개발을 하는 경우가 많지만, 이에 못지않게 이미 개발된 소스코드를 분석하는 일도 많다.
남의 소스코드를 분석하다보면 잘 이해가 되는 소스가 있는 반면, 여러번 봐야하고, 심지어 필기를 해가며 분석을 해가야 이해가 되는 소스가 있다. 함수가 어떤 동작을 수행하는지 알기 위해 코드 한줄 한줄을 다 읽어야 이 함수가 무슨 일을 하는 지 알수 있다면 이 코드의 분석은 정말 끔찍하고 피하고 싶은 일이 될것이다.
이 책을 읽고 난 뒤, "이 코드는 이 부분 때문에 가독성이 참 떨어지네" 라고 잡아낼 수 있는 감이 생긴 것 같다. 물론 직접 코딩을 할 때도 많은 도움이 될 것이다.

이 책은 얇다. 삽화, 소스코드, 글 들이 잘 배치가 되어있어서 지루하지않고 재미있게 읽을 수 있고, 250페이지 정도여서 짧은 시간에 읽을 수 있는 분량이다.
저자들은 예제를 통해서 이 코드는 왜 나쁜지, 어떻게 하면 읽기 좋은 코드가 되는지를 설명하고 있다. 저자들이 직접 개발했던 코드들, 오픈소스 코드들(크로미움 프로젝트 등)에서 어떠한 부분이 읽기 좋지 않았고, 어떻게 개선이 되서 읽기 좋은 코드가 되었는지 잘 설명을 해주고 있다. 설명을 위해 만든 코드가 아닌, 문제가 있었던 코드들을 찾아서 사용하고 있어서 그런지 예제들이 참 좋았던 것 같다.

이 책은 총 네 파트로 구성 되어있다.
첫번째 파트 (표면적 수준에서의 개선) - 파트 이름대로 표면적 수준에서의 개선할 수 있는 내용들을 설명하고 있다. 변수명, 함수명, 주석등을 통해 코드를 접했을 때 바로 보이는 부분들을 다루고 있다.
두번째 파트 (루프와 논리를 단순화하기) - 조건문, 루프 (do/while, goto)를 분석하기 쉽게 구성하는 방법, 큰 논리를 단순한 작은 논리로 단순화하여, 읽는 사람이 쉽게 소화할 수 있는 방법을 제시하고 있다.
세번째 파트 (코드 재작성하기) - 큰 흐름과 관계없는 작은 문제들로 쪼갠다음 분리하고, 작업은 한번에 하나씩이라는 원리를 토대로 작업을 재정리하는 방법을 다루고 있다.
네번째 파트 (선택된 주제들) - 이 파트에서는 테스트 코드의 가독성에 대해 다루고, 분/시간 카운터 설계 및 구현과정을 진행하면서 어떻게 가독성을 높여가는지 보여주고 있다.

소프트웨어 엔지니어라는 직업을 가지고도 변수 명, 변수 선언 위치 등에 대해 고민하고 구현을 했었던 적이 과연있었나 싶고, 부끄럽기까지하다. 이 책의 내용들을 통째로 머릿속에 집어넣고 다니고 싶다. 코드를 작성하는 사람이 아닌 코드를 읽는 사람의 입장에서 구현을 하라는 말을 명심한다면 읽기 좋은 코드를 작성할 수 있을 것이다.

자신의 코드를 남에게 보이기 부끄러웠다면, 당장 이 책을 사서 보길 바란다.

2012년 4월 29일 일요일

웹 표준으로 만드는 안드로이드 웹앱 (한빛미디어)



이 책의 제목을 처음 접했을 때, 웹 앱을 만드는 방법을 소개하는 책이구나 하는 생각이
들면서, 과연 안드로이드 용 웹앱은 무엇을 말하는 것인가 하는 궁금증이 생겼습니다.
그리고 큰 제목 아래 깨알같이 많은 기술을 나열하고 있습니다.
HTML, CSS, 자바스크립트, 제이쿼리, 제이큐터치, 폰갭 등의 기술들이 제목 아래 쓰여
있는데, 이렇게 200페이지도 안 되는 얇은 책이 이런 기술을 다 커버할 수 있나 하는 의구심이
들었고, 맛보기용 도서일 수도 있겠다 하는 생각이 들었습니다.
책을 읽고 나서 안드로이드 용 웹 앱은 이렇게 만드는 겁니다 라고 쉬운 말로 이야기를
들었다는 느낌이었습니다.

이 책은 웹 앱 중에서도 안드로이드(모바일) 용 웹 앱에 대한 설명을 하고 있습니다.

모바일 환경은 작은 화면, 터치 인터페이스 등등 PC에서의 웹 앱 사용 시나리오와는
많은 차이가 있습니다.
이 책은 이 차이를 어떻게 웹 앱에서 줄여줄 것인가를 가이드하고 있습니다.
물론 책 제목에 쓰인 많은 기술들(HTML, CSS, 자바스크립트, 제이쿼리, 제이큐터치, 폰갭)을
설명하고 있지만 이 기술들은 맛보기로 언급하는 수준일 뿐입니다.
물론 이러한 기술들을 잘 모르는 독자들은 이 책으로 위 기술들이 무엇인가 감을 잡을 수가
있을 것입니다.

이 책은 모바일용 웹앱 제작을 어떻게 하는것인가가 핵심으로써 위의 기술들을 잘
아는 전문가라고 하더라도 모바일 환경에서의 웹 앱 경험이없는 개발자라면 이 책을
추천하고 싶습은니다.

개정판 답게 철자 오류 등도 다른 책에 비해 작고, 번역도 상당히 매끄럽습니다.

모바일용(안드로이드) 웹 앱을 개발하고 싶다면 이 책부터 읽기를 추천드립니다!

2012년 3월 16일 금요일

HTML5 Canvas (한빛미디어)



"To Flash" 라는 문구로 시작되는 이 책은 HTML5 Canvas에 대한 내용을 담고 있다.

캔버스(canvas)에 수많은 기능들이 있겠지만 이 책은 그중에서 2D 에 대한 내용을 중점적으로 다루고 있다.
선그리기, 도형그리기, 이미지로딩, 색칠, 문자 출력, 회전변환, 확대 축소 등등의 기본적인 2D 에 대한 기능 설명과 함께,
캔버스에서 비디오와 오디오가 어떻게 사용되는지에 대한 내용도 포함하고 있다.
이러한 기능들을 이용하여 간단한 웹앱 게임을 만들어가면서 설명하고 있어서 지루하지 않게 배울수가 있었다.
책의 뒷부분에서는 맛보기로 WebGL, ElectroServer에 대한 설명을 언급하고 있는데,
독자들이 이 책을 읽고 스스로 더 공부를 하도록 가이드를 주는것 같아서 좋았다.

이 책을 선택한 이유 중 하나는 "어떻게 html과 javascript로 웹앱을 만들지?" 하는 궁금함 이었다.
그만큼 나는 html과 javascript에 대한 지식이 거의 없었다.
하지만 이 책은 캔버스를 사용하는데 필요한 기본 html, javascript에 대한 배경설명으로 시작되기 때문에,
책의 예제코드를 이해하는데 크게 어려움이 없었던 것 같다.
이 책은 예제 소스코드 한줄 한줄에 대해 자세히 설명하고 있고,
매 챕터마다 풀 소스코드를 수록하고있어서 책만 읽더라도
캔버스를 이용하여 html을 어떻게 구현을 하는지에 대한 감을 잡을 수 있었다.

하지만 예제로 사용되는 코드가 중복되는 부분이 많아서 불필요하게 책이 좀 두꺼워진 것 같다.
그렇지만 나와같은 초보자들에게는 더 도움이 되는 부분이다.

번역서는 보통 문맥이 매끄럽지않게 번역되는 부분때문에 개인적으로 원서를 고집하는 경향이 있었지만,
이 책은 깔끔한 번역으로 번역서라고 느껴지지 않을 정도로 글을 읽는데 문제가 없었다.

이 책을 꼼꼼히 읽는다면 웹앱을 만들 채비를 갖출 수 있을것이다.

나만의 멋진 웹앱으로 크롬의 웹앱스토어나 아이튠스 앱스토어에 등록해보자.

http://www.hanb.co.kr/trackback/978-89-7914-898-5