이전

리뷰 (3)

한줄평
평점 분포
  • 리뷰 총점10 0%
  • 리뷰 총점8 33%
  • 리뷰 총점6 67%
  • 리뷰 총점4 0%
  • 리뷰 총점2 0%
연령대별 평균 점수
  • 10대 0.0
  • 20대 0.0
  • 30대 0.0
  • 40대 0.0
  • 50대 6.0
리뷰 총점 종이책
코딩의 기술
"코딩의 기술" 내용보기
제목만 본다면 이 책을 잘 읽고 잘 이해하고 잘 따라한다면 왠지 코딩의 기술이 늘 것 만 같은 책이다. 늘  그렇듯 제목은 현실과 살짝 다르기도 하다.아무튼 이책의 원서의 제목은 "게임 프로그래머를 위한 코딩 기술"이다.비교적 얇은 두께에 그동안 읽었던 리뷰 책들에 비하면 비교적 짧은 시간에 읽은 축에 속한다. 내용도 그렇고 어렵지는 않아서 조금은 더 쉽게 읽힐 수 있었던 책
"코딩의 기술" 내용보기



제목만 본다면 이 책을 잘 읽고 잘 이해하고 잘 따라한다면 왠지 코딩의 기술이 늘 것 만 같은 책이다. 늘  그렇듯 제목은 현실과 살짝 다르기도 하다.

아무튼 이책의 원서의 제목은 "게임 프로그래머를 위한 코딩 기술"이다.

비교적 얇은 두께에 그동안 읽었던 리뷰 책들에 비하면 비교적 짧은 시간에 읽은 축에 속한다. 내용도 그렇고 어렵지는 않아서 조금은 더 쉽게 읽힐 수 있었던 책이라고 생각을 한다.


책의 구성 및 특징


 확실히 저자는 다양한 실전 경험과 또한 강의 경험을 가지고 있다는 것을 느낄 수 있었단. 주제를 풀어내는 방식 자체가 일단 마음에 든다. 책의 전체적인 구성은 읽기 좋은 코드를 작성하는 간단한 기술 부터 시작한다.

당연히 복잡한 논리의 중첩을 피해야 한다는 간단한 것에서 부터 시작하여 함수 및 클래스의 활용까지 두르 두르 살펴주고 있단. C++로 만들어진 게임 프로그래밍의 요소들을 주제로 설명하고 있기에 특히나 STL이 많이 언급되고 있다는 것도

주목할 부분이라고 생각이 든다. 

 

 게임 코드로 알아보고 있다고 해서 게임 전체를 기대해서는 안된다. 게임의 일부분을 이루는 코드를 저자가 말하는 효과적인 작성 방법으로 대체하는 기법들을 다루고 있는 것이기 때문이다.  이렇게 앞쪽에서는 읽기 좋은 코드 즉 논리의 중첩등을 피하는 등의 방법을 써서 효과적인 코드를 만드는 방법을 설명하고 있고(그것이 물론 시간 복잡도 측면에서의 절대적인 개선 이것은 아니다.) 뒷쪽으로 갈 수 록 객체 지향적인 것에 대한 언급을 더 많이 해주고 있다.


또한 마지막으로 갈 수 록 이 책이 객체지향 설계를 언급하고 있는 책인지라는 생각이 들 정도로 객체지향 클래스 설계 및 패턴에 관한 이야기 들이 너무 많이 언급이 되고 있다. 물론 이것도 코딩의 기술이라면 할 말 없다.

책의 마지막 챕터는 소스 코드 품질 측정을 위한 기본적인 수치들과 프로그램을 이용한 방법들을 소개해주고 있다. 이 부분은 처음 접해본 것이라서 기존의 빅오 표기법을 통한 분석에만 익숙했었는데 매트릭스를 측정한 코드의 분석 은또 다른 느낌으로 다가왔다.




다음 그림은 책에서 언급한 sourcemonitor 을 이용해 분석해본 짧은 코드이다. 나름 멋있는 분석을 내놓았지만…




결론


코드의 간결화 혹은 읽기 쉬운 코드의 중요성은 말할 필요가 없다. 이 것은 수업 시간에도 학생들에게 제발 나를 배려한 코드를 작성하고 제출해달라고 언급 하기도 하니까 말이야. 물론 숏 코딩을 즐기는 사람들도 많다. 언제나 그렇듯 중요한 것은 문제 해결을 위한 알고리즘 자체의 개선에 있는 것이다. 결국 그 과정에서 이러한 간결화나 읽기 쉬운 코드 그리고 클래스의 설계 및 패턴의 인식 등을 통한 것들이 병행이 된다면 훨씬 좋은 결과물들이 나올 것이라고 생각한다.


다시 한번 말하지만 알고리즘의 개선을 통한 시간 복잡도의 개선이 더 중요하다고 생각한다. 이 책에서 언급하고 있는 나머지 코딩의 기술들은 그것을 이루는 과정에서 나오는 과정에 지나지 않는다. 중요한 것은 역시나 알고리즘이다. 

그러나 이 책은 알고리즘에 관한 책이 아니다.


책을 읽는 내내 (물론 C++ 이 기반이여서 그렇지만) STL에 대한 공부를 더 해야 겠다는 생각과 람다에 대한 공부를 해야 겠다는 생각을 할 수 밖에 없었다. 책에서 언급되는 것들이 그 이유기도 하지만 요즘은 저지 사이트의 다양한 문제들도 STL을 많이 사용하고 있기에 


자 진짜로 결론을 내어보면


이 책은 논리의 간소화 혹은 나머지 다양한 기법 혹은 기술들을 통해 읽기 쉬우면서도 명확하고 복잡하지 않은 형태로 코드를 변경하는 기법을 통해 코딩의 효율성을 안내하고 있다. 또한 그 과정에서 클래스를 사용하면서 프로그래머가 가져야 하는 설계 기법에 대한 이야기들 그리고

자신이 작성한 프로그램의 분석(시간 복잡도 까지는 아님)을 통해 조금은 수치화된 형태로 자신의 프로그램을 다시 한번 바라볼 수 있도록 해주고 있다.


이것도 중요하지만 알고리즘 공부를 찬찬히 그리고 보다 중요한 문제를 해결할 수 있는 논리를 키우는 것이 더 중요하다고 생각을 하며 마쳐본다.


P. S  이 책에서 말하고 있는 다양한 노하우들을 책을 읽으면서 정리해본 것을 다시 적어보며 진짜 마친다..

  • 의미를 전달할 수 있는 변수 이름을 붙여 주세요
  • 매직 넘버에는 이름을 붙여주세요
  • 복잡한 조건식은 함수화해주세요
  • 계산식을 함수화해서 의미를 전달하세요.
  • 사전 조건과 사후 조건은 assert로 명시해주세요.
  • 사소한 중복도 티끌모아 태산이 되므로 줄여주세요.
  • 조기 리턴을 활용해 주세요.
  • if 조건문을 작고 단순하게 만들어주세요.
  • 자료구조를 활용해서 if 조건문을 줄여보세요.
  • null을 체크하지 않아도 되는 방법을 생각해보세요.
  • STL 알고리즘 함수를 활용해 주세요.
  • 검색 반복문을 분리해주세요.
  • 반복문 내의 처리는 최소한으로 만들어 주세요.
  • 반목분 내부에서는 1개의 처리만 수행하세요.
  • 람다식을 사용해서 반복문을 일반화하세요.
  • case 내부는 함수화해주세요.
  • 부정확한 상태를 assert로 확인해주세요.
  • 상태에 따른 분기는 다형성을 사용해야 하는 신호에요.
  • 1개의 함수에는 1개의 역할만 주세요
  • 단순한 함수일수록 재사용하기 좋아요
  • 복잡한 복합 조건은 피해주세요.
  • 자연어처럼 읽을 수 있게 코드를 작성하세요.
  • 조건 분기 블록 내부는 함수화해야 하는 후보랍니다.
  • 1개의 반복문에는 1개의 함수만 사용해주세요.
  • 반복문 블록 내부는 함수화 후보랍니다.
  • 데이터 변환 부분은 함수화해주세요.
  • 데이터 확인 부분은 함수화해주세요.
  • 배열 랜덤 접근 부분을 함수화해주세요.
  • 취약한 기본 자료형 배열을 사용하지 말아 주세요.
  • 주석으로 말하지 말고 함수로 말하세요.
  • 매개 변수가 너무 많다면 함수를 분할하라는 신호랍니다.
  • 매개 변수가 너무 많다면 클래스화하라는 신호랍니다.
  • 컴파일러의 최적화 기능을 활용하세요.
  • 재사용만이 함수화의 장점이 아니랍니다.
  • 기본 자료형을 최소한으로 만들어 주세요.
  • 컨테이너 조작을 위한 전용 클래스를 만들어 사용하세요.
  • 변수를 클래스화해서 의도를 명확하게 전달해주세요.
  • 변수를 클래스화해서 제한을 해주세요.
  • 부분을 작게 만들면 전체가 작아져요.
  • getter와 setter를 되도록 사용하지 마세요.
  • 부모 자식 관계라도 private를 사용해주세요.
  • 클래스의 멤버 변수는 최소한으로 만들어주세요.
  • 소결합 클래스로 설계해주세요.
  • 상속보다는 이양을 우선해주세요
  • 상속과 추상 인터페이스 구현을 구별해주세요.
  • 하나의 클래스에 하나의 책임만 맡겨주세요.
  • 변하지 않는 부분과 변하는 부분을 구분해서 설계해주세요.
  • 불필요하고 복잡한 것을 넣지 마세요.
  • 구체적인 것이 아닌 추상적인 것에 의존하세요
  • 직접적인 친구와만 놀고, 친구의 친구와는 놀지마세요.
  • Singletone 패턴을 남용하지 말아주세요.
  • 무리하게 디자인 패턴을 적용하려 하지 말아주세요.
  • 클래스의 역할과 책임에 관해서 생각해주세요.
  • 1개의 클래스에 너무 많은 일을 주지 않게 설계하세요.
  • 중재자를 사용해 의존 관계를 단순화하세요.
  • 외부와의 인터페이스 부분을 클래스화하세요.
  • 객체생성도 매우 중요한 역할이랍니다.
  • 전용 클래스와 범용 클래스를 명확하게 구분해주세요.
  • 책임을 제대로 이양해 주세요.
  • 클래스의 추상도는 캡슐화에 영향을 줍니다.
  • 항상 추상도 높은 인터페이스를 어떻게 생성할지 생각해보세요.
  • 추상 인터페이스로 소결합을 유도하세요.
  • 추상 인터페이스 대신에 std:function을 사용해 보세요.
  • 객체가 처음부터 완전환 상태로 생성되게 해주세요.
  • 실행 순서를 보장할 수 있게 설계해주세요.
  • 생성자와 소멸자로 리소스를 관리해주세요.
  • 구현 방법을 은폐하는 이름을 붙여 주세요.
  • 문제 영역에는 What을 붙여주세요.
  • 전문가가 될 수 있게 많은 것을 배우세요.


s****i 2016.04.29. 신고 공감 3 댓글 0
리뷰 총점 종이책
읽기 좋은 코드를 작성하는 기술
"읽기 좋은 코드를 작성하는 기술" 내용보기
https://brunch.co.kr/@daejin/151장을 읽었을 때 느낌은 정말 훌룡했습니다. 특히 아래의 두 단원은 언어를 불문하고 모든 개발자들이 숙지하고, 이대로 작성했는지 자아비판 후 코드리뷰 요청을 해야되지 않을까 생각합니다.1.3 조건식과 계산식1.5 제어문다른 사람의 코드리뷰를 하다보면 작성된 if문 순서, 조건만봐도 얼마나 생각했는지, 노력했는지, 공부했는지, 경험했는지, 그리
"읽기 좋은 코드를 작성하는 기술" 내용보기


https://brunch.co.kr/@daejin/15


1장을 읽었을 때 느낌은 정말 훌룡했습니다. 특히 아래의 두 단원은 언어를 불문하고 모든 개발자들이 숙지하고, 이대로 작성했는지 자아비판 후 코드리뷰 요청을 해야되지 않을까 생각합니다.


1.3 조건식과 계산식

1.5 제어문


다른 사람의 코드리뷰를 하다보면 작성된 if문 순서, 조건만봐도 얼마나 생각했는지, 노력했는지, 공부했는지, 경험했는지, 그리고 개발에 관심이 있는지가 나타날 때가 있습니다. 위 두 단원은 좋은 코드를 작성하는데 반드시 도움이 되리라 생각합니다.


많은 개발서에 '코드를 잘 작성해야 된다'는 글은 무수히 봤지만, 정작 어떻게 작성해야 된다는 내용은「Code Complete」이후 처음으로 본 거 같습니다. 최근 거의 모든 언어들이 람다식을 비록한 함수형 언어의 장점을 수용하는 경우가 많은데, 오래된 Code Complete에서 다루지 못한 부분을 다루고 있어 더욱 유용합니다.


'1.6 함수'부터 앞 내용이 반복되어 아쉽지만, 그래도 반복하고 숙지해야 될 만큼 좋은 내용들입니다.


이 책은 총 3장으로 구성되어 있습니다.


1장 읽기 좋은 코드를 작성하는 기술

2장 간단한 설계를 위한 원칙과 패턴

3장 소스 코드 품질 측정


1장은 초급개발자를 포함하여 개발자들에게 유용한 내용인 반면, 2장은 솔직히 누구를 대상으로 작성된 것인지 모르겠습니다. 약 50페이지 안에 객체지향 설계와 디자인 패턴을 소개하고 있으며, 다시 40페이지 정도 클래스 설계 요령이 작성되어 있습니다. 거대한 내용을 너무 작은 그릇에 담은 것 같습니다. 3장은 품질에 이런 것들이 있다는 소개정도 입니다.


지은이의 말 끝부분에서


기술 서적의 대부분은 500페이지를 훌쩍 넘는 부담되는 양입니다. 이 책은 그러한 내용을 압축해서 단기간에 읽고, 곧바로 사용할 수 있게 하는 것을 목표로 썼습니다.


1장은 훌룡했지만 2,3장은 너무 크게 손실압축을 한 것 같습니다. 그리고 2장의 내용은 결코 단기간에 습득할 수 없음을 많은 분들이 알고 있고, 저자도 알고있습니다. 저자의 목표대로 되었으면 했는데 조금 아쉬운 책입니다. 하지만 번역은 깔끔하게 되어있어 편하게 읽을 수 있습니다.

-------------------------------------

본 리뷰는 한빛미디어에서 제공된 책으로 작성되었습니다.

s*****n 2016.04.19. 신고 공감 0 댓글 0
리뷰 총점 종이책
읽기 쉽고 내용도 볼만은 하다.
"읽기 쉽고 내용도 볼만은 하다." 내용보기
책도 두껍지 않고 딱딱하지 않고 읽기 편하다.역시 일본책을 번역해서 그런지 읽는 동안 편하고 정리도 잘 되어 있는 느낌이다.하지만 읽고 나서 기억나는게 별로 없다.T.T필요할 때 읽는 그런 책이 아니라 코딩을 좀 잘하기 위한 책이라서 그런건지는 모르지만...사실 엄청난걸 기대한건 아니지만..."이 책은 게임 프로그래밍에 자주 활용하는 코드를 예로 들면서 개발자가 한 단계 성장
"읽기 쉽고 내용도 볼만은 하다." 내용보기

책도 두껍지 않고 딱딱하지 않고 읽기 편하다.

역시 일본책을 번역해서 그런지 읽는 동안 편하고 정리도 잘 되어 있는 느낌이다.

하지만 읽고 나서 기억나는게 별로 없다.T.T

필요할 때 읽는 그런 책이 아니라 코딩을 좀 잘하기 위한 책이라서 그런건지는 모르지만...

사실 엄청난걸 기대한건 아니지만...


"이 책은 게임 프로그래밍에 자주 활용하는 코드를 예로 들면서 개발자가 한 단계 성장하는 데 필요한 코딩 기술 전반을 다룬다."

사실 이부분을 좀 더 확실히 봤어야 하는건데....

그래도 일반적인 프로그램에도 적용할 만한 내용도 있다. 

YES마니아 : 골드 y****9 2017.05.12. 신고 공감 0 댓글 0