들어가기 전에
작년 부스트캠프를 진행하면서 추천받았던 책이다. 코딩실력에 대한 자괴감을 느껴 코딩을 다시한번 제대로 해보려는 찰나의 나에게 어울리는 책이다. 챕터별로 느낀점을 정리하고 총평으로 마무리하겠다.
1. 코드는 이해하기 쉬워야 한다.
이 챕터는 어떠한 파트에도 속해있지 않다. 당연하면서도 중요한 얘기라서 그럴지도 모른다. (느낌상으론 열역학 제 0법칙 같다.)
다른 사람의 코드를 볼때나 심지어 과거의 내가 짠 코드마저도 이해가 안될 때가 있다. 아니... 정말 많다. 개인적으로는 알고리즘 문제풀 때 많이 느꼈다. 1년전의 코드를 보고 어...왜이렇게 짰지 싶은...(물론 그동안 성장한걸지도)
주 언어로 파이썬을 쓰기 때문에, 파이썬 생각이 많이 났다. 파이썬은 파이써닉한 코드를 지향하는데, 리스트 컴프리헨션같은 경우 많이 낯설다. 사실 그래서 쓰지 않는 편이 읽는 입장에선 좋을까라고 생각도 들지만, 성능적으로 훨씬 좋다고 들어서 그건 아닌거 같다.
여튼, 코드를 얼마나 짧게 잘 짜야되지?와 같은 고민을 하던 중, 책에서 포인트를 잘 짚어주었다. 코드를 봤을 때 이해하는 시간을 최소화하도록 짜자!
Part 1. 표면적 수준에서의 개선
2. 이름에 정보담기
변수에 이름정하는 것이 중요하다는 것은 모두가 알지만, 쉽지 않다. 특히, 변수를 정해야 되는데 해당하는 영단어가 떠오르지 않을 때...영어공부 좀 할껄하는 후회가 몰려온다.
그리고 나는 알고리즘 문제를 풀 때, tmp와 같은 변수를 정~말 많이 사용한다. 그러다보니 책보면서 굉장히 찔렸다. tmp는 좁은 범위에서는 사용해도 괜찮지만, 낭비하지 않아야 한다.
한편, 가장 기억에 남는 부분은 이름 포맷팅 뒤에 _를 붙이는 것이다. 이를 통해, 클래스 멤버 변수와 로컬 변수를 구분할 수 있다! 가끔 저런식의 변수를 봐도 왜 그렇게 쓸까..하는 궁금증이 있었는데, 역시나 특별한 이유가 있었다.
3. 오해할 수 없는 이름들
포괄적인 표현보다는 구체적인 표현으로 오해가 없도록 해야 한다. 특히, 경계에 대한 이야기가 제일 기억에 남는다.
- mix / max : 경계를 포함하는 한계값
- first / last : 경계를 포함하는 범위
- begin / end : 경계를 포함하고/배제하는 범위
begin / end가 다소 이해가 안되지만, 영어에서 해당하는 적절한 단어가 없어서 이를 관행적으로 사용한다고 한다.
4. 미학
가장 중요한 점은 올바른 것보다 일관성이라고 한다. 개인이 아니라 팀이 하는 것이기 때문에 팀에서 정한 룰을 받아들여야 한다는 의미가 아닐까...싶다. 여기서 일관성은 들여쓰기나 괄호를 어디에 놓는가에 대한 것뿐만 아니라 코드에 언급되는 순서(A, B, C가 순서대로 언급된다면 B, C, A로 언급하지 말라는 얘기)까지 포함된다.
5. 주석에 담아야 하는 세상
이번 파트중 가장 인상깊었던 챕터였다. 뼈때리는 조언이 하나 있었다. 나쁜 이름에 주석을 달지 말라. 대신 이름을 고쳐라. 하하하...맞는 말이다. 그리고 단순히 주석으로 코드만을 설명하면 된다고 생각했는데, 다른사람의 입장에서 그 이상의 가치를 담을 수 있다는 것을 보고 감명받았다.
예를 들면, 해당 코드는 그렇게 좋은 코드가 아니니 위험하다는 것을 주석으로 알린다던가, 코드에 대한 추가적인 설명을 담는 식(이 자료구조는 왜 쓰였는지 등)이다.
그렇게 3줄로 요약을 할 수 있다.
- 설명하지 말아야 할 것
- 기록해야 할 것
- 자신을 코드읽는 입장에서 생각할 것
6. 명확하고 간결한 주석 달기
주석에 대한 다양한 팁을 얻을 수 있었다.
- 'it'이나 'this'와 같은 대명사가 여러 가지를 가리킨다면 사용하지 말라
- 함수의 동작을 명확하게 설명하라 (혼동을 주지 않아야 함)
- 신중하게 선택된 입/출력 예로 주석을 서술하라 (때론, 긴 설명보다 간단한 예제가 낫다.
백문이불여일견) - 코드가 가진 의도를 너무 자세한 내용이 아니라 높은 수준에서 개괄적으로 설명하라 (나무를 보지말고 산을 보라는 뜻인것 같음)
- 같은 줄에 있는 주석으로 의미가 불분명한 함수의 인수를 설명하라. (인수들의 역할을 알 수 있게 도와준다)
- 많은 의미를 함축하는 단어로 주석을 간단하게 만들라 (주저리주저리보다는 한 단어로 컴팩트있게..하는게 좋다!)
총평
책의 내용이 좋아서 술술 읽혔다. 특히, 이번 장은 변수와 주석에 대한 내용이어서 직접 코딩하면서 바로바로 적용해나갈 수 있을 것같다.
'도서 리뷰 > IT 도서 리뷰' 카테고리의 다른 글
[IT 도서 리뷰] 구글 엔지니어는 이렇게 일한다 (CH. 2) (0) | 2023.01.19 |
---|---|
[IT 도서 리뷰] 구글 엔지니어는 이렇게 일한다 (CH. 1) (0) | 2023.01.12 |
[IT 도서 리뷰] 읽기 좋은 코드가 좋은 코드다 (Part. 4) (0) | 2022.07.26 |
[IT 도서 리뷰] 읽기 좋은 코드가 좋은 코드다 (Part. 3) (0) | 2022.07.24 |
[IT 도서 리뷰] 읽기 좋은 코드가 좋은 코드다 (Part. 2) (0) | 2022.07.19 |