고스트 오브 쓰시마, 슬라이 쿠퍼 등 세계적인 게임의 제작사, ‘서커펀치’의 프로그래밍 기술을 엿보다!
파이썬, 자바스크립트 개발자를 위한 C++ 코드 읽기 가이드 수록
이 책은 전 세계적으로 천만 장 가까이 판매된 메가 히트 게임, [고스트 오브 쓰시마]와 [슬라이 쿠퍼] 시리즈로 유명한 ‘서커펀치’의 프로그래밍 모범 사례를 21가지로 엮은 책이다. 총 21개의 ‘규칙’으로 구성된 이 책에는 모든 프로그래머가 알아야 할 필수 지식과 개발 아이디어를 자극하는 인사이트가 가득 담겨 있다. 또한, 코드를 작성할 때뿐만 아니라, 디버깅과 최적화 관련 지식도 함께 다루고 있어서 게임 분야에 국한되지 않고, 모든 분야의 프로그래머에게 유용한 지식을 제공한다. 이 책에 담긴 ‘서커펀치’만의 프로그래밍 비법을 익혀 프로그래밍 전문가에 한 발짝 더 다가가자.
Contents
규칙 1 최대한 단순하게, 그러나 너무 단순하지 않게
_단순성 측정하기
_그러나 너무 단순하지 않게
_문제를 단순화하는 것이 솔루션보다 나을 때가 있다
_단순한 알고리즘
_흐름을 놓치지 말라
_모든 규칙을 지배하는 단 하나의 규칙
규칙 2 버그는 전염된다
_사용자를 믿지 말라
_자동화 테스트는 까다롭다
_상태를 유지하지 않는 코드는 테스트하기 쉽다
_제거할 수 없는 상태는 감사하라
_내 코드를 사용하는 동료를 믿지 말라
_코드를 건강하게
규칙 3 좋은 이름은 최고의 문서다
_글자 수를 줄이는 것은 최적화가 아니다
_코딩 컨벤션을 믹스앤드매치하지 말라
_제 무덤을 파지 말라
_생각하게 하지 말라
규칙 4 일반화에는 세 가지 사례가 필요하다
_필요하지 않으면 구현하지 말라
_이의 있다고요? 저는 아주 확고합니다
_섣부른 일반화는 정말 나쁘다
_이것이 성공은 아니다
규칙 5 첫 번째 최적화 교훈: 최적화하지 말라
_첫 번째 최적화 교훈
_두 번째 최적화 교훈
_두 번째 최적화 교훈 시험해보기
_다섯 단계 최적화 과정 적용하기
_세 번째 최적화 교훈은 없다
간주 규칙 5에 대한 비판을 중심으로
규칙 6 코드 리뷰의 세 가지 장점
_코드 리뷰는 지식 공유다
_금지된 코드 리뷰
_코드 리뷰의 진정한 가치
_코드 리뷰는 본질적으로 사회적 활동이다
규칙 7 실패 케이스를 제거하라
_잘못 사용하면 제 무덤 파기 쉬운 함수
_나도 모르게 내 무덤 파기
_컴파일러의 도움 받기
_타이밍이 전부다
_더 복잡한 예제
_순서 실수를 불가능하게 만들기
_메서드 체이닝 대신 템플릿 사용하기
_상태 제어 조율하기
_실수를 발견하는 것도 좋지만, 실수를 방지하는 것이 더 좋다
규칙 8 실행되지 않는 코드는 작동하지 않는다
_1단계: 단순한 시작
_2단계: 대표적인 패턴 일반화하기
_3단계: 위장 추가하기
_4단계: 뿌린 대로 거둔다
_책임 따지기
_테스트의 한계
규칙 9 요약 가능한 코드를 작성하라
_실패란 이런 느낌이다
_단기 기억의 역할
_경계선을 그어야 하는 곳
_추상화의 비용
_이해하기 쉽도록 추상화를 사용하라
_장기 기억의 역할
_상식은 공짜지만 새로운 지식은 비싸다
_단기 기억과 장기 기억을 함께 활용하라
규칙 10 복잡성을 격리하라
_간단한 예제
_내부 세부 사항 숨기기
_상태 분산과 복잡성
_능력 복원?
_안개가 끼기 시작하다
_접근법 다시 생각해보기
_격리된 복잡성, 단순한 상호작용
규칙 11 두 배 좋은가
_앞으로 전진하는 세 가지 길: 무시, 미세 조정, 리팩터링
_점진적 진화 vs 지속적 재발명
_간단한 기준 하나
_애매한 혜택 다루기
_재작업은 작은 문제를 정리할 좋은 기회다
규칙 12 큰 팀에는 강력한 컨벤션이 필요하다
_형식화 컨벤션
_언어 사용 컨벤션
_문제 해결 컨벤션
_효율적인 팀은 같은 방식으로 생각한다
규칙 13 산사태를 일으킨 조약돌을 찾으라
_버그의 생애 주기
_상태의 가짓수 최소화하기
_제거할 수 없는 상태 다루기
_피할 수 없는 지연 다루기
규칙 14 네 가지 맛의 코드
_쉬운 문제와 단순한 솔루션
_쉬운 문제와 세 가지 복잡한 솔루션
_복잡성에 따르는 비용
_프로그래머의 네 가지(실제로는 세 가지) 유형
_어려운 문제와 작동하지 않는 약간 복잡한 솔루션
_어려운 문제와 약간 복잡한 솔루션
_어려운 문제와 단순한 솔루션
규칙 15 잡초를 뽑으라
_잡초 식별하기
_코드는 어떻게 잡초로 덮이는가
규칙 16 코드가 아닌 결과에서부터 작업하라
_한 가지 예제
_짜증 나는 일
_골짜기의 끝 선택하기
_뒤로 작업해나가기
_완전히 다른 무언가를 위해
_앞으로 작업하기와 거꾸로 작업하기
규칙 17 더 쉽게 해결되는 큰 문제도 더러 있다
_제대로 착지하기
_올바른 방향 찾기
_기회 포착하기
규칙 18 코드가 스스로 이야기하게 하라
_사실이 아닌 이야기는 하지 말라
_이야기에는 목적이 있어야 한다
_좋은 스토리텔링
규칙 19 평행 재작업
_뜻밖의 문제
_평행 시스템을 구축하라
_구체적인 예시
_실전에서의 스택 할당
_불안 요소
_좀 더 영리하게 스택 컨텍스트 만들기
_이전 스택 컨텍스트를 새 스택 컨텍스트로 마이그레이션하기
_StackVector 마이그레이션 준비하기
_마이그레이션할 시간
_평행 재작업 전략을 적용하기 좋은 상황
규칙 20 계산하라
_자동화할 것인가, 하지 않을 것인가, 그것이 문제로다
_절대적 한계 조사하기
_계산이 달라질 때
_계산 문제가 다시 MS 워드 문제로 바뀔 때
규칙 21 때로는 못질을 해야 한다
_새로운 인수 추가하기
_버그가 하나뿐일 리 없다
_자동화의 경고음
_파일 크기 관리하기
_지름길은 없다
결론 자신의 규칙을 만들라
_자신의 판단을 믿으라
_토의하라
_끝맺음
부록 A 파이썬 프로그래머를 위한 C++ 코드 읽기
_타입
_형식화와 주석
_클래스
_가시성
_선언과 정의
_함수 오버로딩
_템플릿
_포인터와 참조
부록 B 자바스크립트 프로그래머를 위한 C++ 코드 읽기
_타입
_배열
_클래스
_선언과 정의
_함수 오버로딩
_템플릿
_포인터와 참조
Author
크리스 짐머만,박상현
세계적으로 유명한 서커펀치프로덕션의 공동 설립자이자 스튜디오 책임자. [슬라이 쿠퍼] 시리즈, [인퍼머스] 시리즈, [고스트 오브 쓰시마]를 제작했다.
세계적으로 유명한 서커펀치프로덕션의 공동 설립자이자 스튜디오 책임자. [슬라이 쿠퍼] 시리즈, [인퍼머스] 시리즈, [고스트 오브 쓰시마]를 제작했다.