int a = 3;
int x = 8;
int limit = 10;
초보 프로그래머들은 프로그래밍을 할 때 그저 코드를 '구현'하는데 집중한다.
최대한 빨리 문제를 해결하기 위해 변수명은 a, x 같은 것으로 설정한 후,
머리 속으로 해당 변수에 대한 내용을 기억해두고, 그 기억을 바탕으로 문제를 해결한다.
위는 그 프로그램의 예시이다.
그리고 한달 후, 내가 전에 작성한 코드를 응용해서 문제를 해결해야 하는 순간이 왔다.
그래서 코드를 열어보았지만.. 응용해야할 코드를 알아볼 수 조차 없다!
'a는 뭐지? x는 또 뭐고? limit는 10이하인 숫자를 말하는거야? 10미만인 숫자를 말하는거야?'
당장 응용해서 문제를 해결해야 할 코드가 전혀 기억이 나지 않는다.
처음부터 거의 코드를 다시 짜는 수준으로 코드를 점검해야 문제가 해결 될지도 모른다.
내가 짠 코드였어도 기억나지 않는 것이 당연하다.
1달전에 내가 작성한 코드는 나의 코드가 아니다
에빙하우스의 망각곡선에 의하면, 1달이 지나면 기억의 80%를 망각한다고 한다.
특히 강렬한 기억이 아니거나 특별한 기억이 아니면 더 잊기 쉬운데,
a와 x와 limit같은 변수들은 프로그래밍을 하면서 특별한 기억이라고 보기 어려울 것이다.
겨우 1달 지난 코드만 봐도 이런데, 6개월이나 1년전 혹은 그보다 더 오래된 코드를 볼때는 어떨까?
어쩌면 자신이 과거에 쓴 코드를 전부 기억하려는 시도 자체가 의미없는 행동일지도 모른다.
기억하지 못해도 좋다. 읽는 순간 쉽고 빠르게 이해할 수 있는 코드를 작성하면 되니까.
만약 자신과 함께 일하는 사람이 자신이 작성한 코드도 이해하지 못한다고 생각하면 끔찍할 것이다.
어떻게 해야 내 코드를 처음 보는 사람도 내용을 쉽게 이해하고 편하게 같이 일 할 수 있을까?
정답은 읽기 좋은 코드를 작성하면 된다.
초보 프로그래머는 물론 모든 프로그래머들을 위해
읽기 좋은 코드를 작성하고 싶은 사람들을 위한 책을 소개한다.
삼성 SDS, 삼성 상무 출신의 프로그래머 '임백준'님이 번역하시고,
프로그래밍 관련 커뮤니티에서 책 추천해달라고하면 매우 높은 확률로 나오는
한국의 프로그래머들이 인정하고, 또 많이 공부하는 책이다.
이 책을 관통하는 핵심 아이디어는 코드는 이해하기 쉬워야 한다는 것이다.
특히 자신의 코드를 다른 사람이 읽고 이해할 때 걸리는 시간을 최소로 만들어야 한다고 말한다.
이 책은 크게 4가지 파트로 나뉘어져 있다.
1부, 표먼적인 수준에서의 개선
- 이름짓기, 설명문, 미학, 코드베이스의 모든 줄에 적용될 수 있는 간단한 조언들
2부, 루프와 논리를 단순화하기
- 프로그램에서 사용되는 루프, 논리, 변수를 개선하여 더 이해하기 쉽게 만드는 방법
3부, 코드를 재작성하기
- 코드의 커다란 블록을 높은 수준(higher-level)에서 재조직하고 주어진 문제를 함수 수준에서 해결하는 방법
4부, 선택된 주제들
- '이해하기 쉬운'이라는 원리를 테스트와 코드 예제를 통해 커다란 데이터 구조에 적용
1부부터 4부까지, 코드의 질을 올리는데 필요한 내용들을 난이도 별로 정말 잘 구성했다는 생각이 들었다.
읽기 어려운 코드에서 가장 손대기 쉬운 부분은 '변수 이름과 주석'
그 다음엔 위에서 손댄 변수들을 이용하는 '루프와 논리'
그 다음엔 그 루프와 논리들이 포함되있는 '함수 와 코드 그 자체'
마지막으로 이 코드를 이용할때 필요한 '테스트와 최적화'
작가는 각 장은 독립적이기 때문에 별도로 읽어도 상관 없다고 말하지만,
나는 자신이 읽고싶은 파트가 정해져 있더라도 책의 처음부터 읽어보는 것을 추천한다.
가능하다면 쉽고 빠르게 개선할 수 있는 부분부터 읽어보는게 더 의욕을 불타오르게 하기 때문이다.
'서평 > 코딩, 개발' 카테고리의 다른 글
게임을 움직이는 수학과 물리 서평 (0) | 2020.09.25 |
---|---|
누워서 읽는 알고리즘 서평 (0) | 2020.09.25 |
유니티로 배우는 게임 수학 서평 (0) | 2020.09.25 |
성공으로 이끄는 팀 개발 실천 기술 (0) | 2020.09.25 |
우리는 인공지능의 시대에 살고있다. (0) | 2020.09.19 |