<에러가 무섭지 않게 되는 책> 후기

서주·2024년 7월 1일

JPUB 인스타그램에 '에러가 무섭지 않게 되는 책'의 서평단 모집 공고글을 접하고 소감을 작성해 신청하니 서평단으로 선정되었다.🙌🙌

군대 휴가 기간에 맞춰 본가로 배송 후 휴가기간동안 빡세게 읽었다. 내일 휴가 복귀라니 너무싫다.

우선 목차를 보자

목차

옮긴이 머리말 xi
베타리더 후기 xiii
머리말 xvii
프롤로그 xix

1장 에러가 왜 무서울까?
1.1 에러를 읽어보자 4
1.2 에러를 읽지 않게 되는 이유 8
이유 1 영어로 쓰인 에러 9
이유 2 길어서 읽기가 어려움 16
이유 3 읽어도 바로 원인을 파악할 수 없음 18
1.3 에러를 향한 마음가짐 24
간단하게 생각하자 24
어려운 에러는 좋은 학습의 기회 25
에러를 읽는 스킬은 항상 도움이 된다 26

2장 에러를 잘 읽는 방법
2.1 에러의 구성 요소를 알아보자 32
구성 요소 1 에러의 종류 34
구성 요소 2 에러 메시지 35
구성 요소 3 스택 트레이스 36
2.2 에러의 종류를 알아보자 47
에러의 종류 1 SyntaxError 48
에러의 종류 2 ReferenceError 49
에러의 종류 3 TypeError 51
에러의 종류 4 RangeError 52
다른 언어에서 발생하는 에러의 종류 53

3장 효율적으로 에러의 원인 찾기
3.1 디버깅이란? 58
디버깅의 흐름 59
3.2 프린트 디버깅을 해보자 61
프린트 디버깅으로 문제 해결하기 63
경로를 따라 문제의 위치 특정하기 66
3.3 이진 탐색으로 효율적으로 찾아보자 68
이진 탐색이란? 68
프린트 디버깅으로 이진 탐색 71
에러가 표시되는 부분에 문제가 없을 때는? 76
더욱 큰 단위로 이진 탐색하기 81
3.4 최소한의 코드로 디버깅해보자 85
최소한의 코드는 도움을 요청하기 쉽다 89
3.5 디버깅을 빠르게 진행하기 위한 방법 91
사전에 가설 세우기 91
한 번에 하나씩 검증하기 93
작은 의문에 귀를 기울이자 93
귀찮아하지 말자 94

4장 도구를 활용해 편하게 디버깅해보자
4.1 디버거는 강력한 도구 100
4.2 브레이크포인트를 사용해보자 102
브레이크포인트란? 102
브레이크포인트 설정 방법 103
브레이크포인트를 사용해 디버깅해보자 109
4.3 다양한 스텝 실행 124
다음 함수 호출(step into) 124
다음 함수 호출(step over) 126
현재 함수에서 벗어나기(step out) 127
스텝의 사용 시기 129
4.4 조건을 포함하는 브레이크포인트 130
조건을 포함하는 브레이크포인트를 사용해보자 131
__브라우저에서 편리한 조건을 포함하는 브레이크포인트 135
4.5 변수를 감시해보자 136

5장 해결할 수 없는 문제
5.1 개발자를 위한 정보 수집 테크닉 144
구글 검색 144
깃허브 검색 149
커뮤니티에 질문하기 154
1차 정보를 확인하자 156
5.2 에러를 찾을 수 없을 때 159
보고 있는 위치가 다름 159
에러의 출력 설정을 확인하지 않음 161
에러를 프로그램에서 처리하고 있음 163
5.3 에러가 재현되지 않을 때 165
5.4 운영 환경에서 에러를 수집하는 방법 167
에러 수집 방법 167
__진화하고 있는 로그 관리 방법 170

6장 디버깅이 쉬운 코드를 작성하자
6.1 재할당을 자제하자 176
재할당을 억제하는 기능을 사용하자 178
재할당을 하지 않으면 디버깅도 쉬워진다 178
6.2 스코프를 최소화하자 181
스코프가 넓을 때의 단점 182
6.3 단일 책임의 원칙 185
구체적인 예 프로필 작성 서비스 185
6.4 순수 함수를 사용하자 189
순수 함수란? 189
순수 함수와 순수 함수가 아닌 함수의 비교 192
순수 함수의 이용 194
6.5 타입을 의식하여 코드를 작성하자 195
코멘트로 타입 명시하기 196
프로그래밍 언어의 기능을 사용해 타입 정보 부여하기 197
6.6 디버깅을 도와주는 테스트 코드 201
테스트 코드는 무엇일까? 201
테스트 코드와 디버깅의 관계 203
__에러가 발생했을 때 먼저 테스트 코드를 작성하자 204

COLUMN
결함을 수정하는 데 걸리는 시간 27
스택 트레이스의 흐름은 프로그래밍 언어에 따라 다를까? 46
버그는 벌레? 왜 벌레일까? 59
왜 다른 위치가 표시될까? 80
깃을 사용한 이진 탐색 84
자고 나면 버그가 수정된다? 90
테디 베어 효과 95
브레이크포인트를 코드에서 설정하기 122
에디터에서도 사용할 수 있는 디버거 139
PHP에서 에러 출력 설정 162
에러 메시지에서 uncaught의 의미는? 164
여러 방법으로도 에러가 해결되지 않을 때의 회피술 172
코드의 잠재적인 문제 찾기 180
동적 타입 언어와 정적 타입 언어 199
__실제 유저의 조작을 재현하는 E2E 테스트 도구 206

에필로그 207
찾아보기 210

자바스크립트를 위주로 에러의 발생 원인을 분석한다.
크게 에러의 종류, 에러가 발생하는 위치, 에러를 해결하는 방법 순으로 구성된다.

코딩 입문자들은 에러를 마주치면 영어가 싫어서 혹은 난해해서 에러를 분석하기 어렵다.
이런 단계에 있는 사람들에게 위 책은 최고의 지침서가 된다.

에러의 종류

Uncaught RefferenceError: nickname is not defined
at fn3(app.js:5:17)
at fn2(app.js:9:5)
at fn1(app.js:13:5)

위와 같은 에러가 발생했을 때 에러는 크게 세 부분으로 구분된다.

RefferenceError

에러 종류

nickname is not defined

에러 메시지

at fn3(app.js:5:17)
at fn2(app.js:9:5)
at fn1(app.js:13:5)

스택 트레이드(에러가 발생한 경로)

에러는 복잡하고 난해해보일 수 있어도 몇 가지 유형만 알고 있으면 손쉽게 그 이유를 파악할 수 있다.

에러의 원인(디버깅)

에러의 원인을 찾는 기본적인 방법은 print를 하는 것이다.
에러가 있을 것이라 예상되는 부분에 print를 해 코드의 흐름을 확인할 수 있다.
그럼 에러가 있을 것이라 예상되는 부분은 어떻게 찾냐?

이진탐색

코드를 반으로 쪼개가면서 비정상적인 부분을 찾는다.


쿠팡플레이 대학전쟁에서 카이스트팀이 문제를 해결하는 데 이진탐색을 통한 디버깅을 사용한 것으로 유명하다.

위와 같은 방법으로 에러를 찾을 수 있지만 보다 빠른 에러 찾기 방법이 있다.

디버거

브레이크포인트를 사용해 원하는 부분에서 멈추거나 스탭을 통해 함수의 실행을 제어할 수 있다.

총평

코딩을 시작할 때 이 책을 접했으면 빠르게 성장할 수 있을 것 같다. 코딩 입문자가 겪을 수 있는 상황들이 적나라하게 기술되어 생각을 읽힌 것 같은 느낌이 들기도 하였다.

디버깅의 정공법뿐만 아니라 '구글 검색은 이러케이러케 해라', '도무지 해결이 안되면 잠깐 자고 와라' 같은 숙련된 개발자에게서 나오는 소소한 꿀팁도 많이 담겨 있어 1:1 티칭을 받는 효과가 있다.

개발자로서 나아가기 위해 필수적인 디버깅능력을 키워주는 도서로, 코딩 입문자에게 적극 추천한다.
자고와라

0개의 댓글