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년전 혹은 그보다 더 오래된 코드를 볼때는 어떨까?
어쩌면 자신이 과거에 쓴 코드를 전부 기억하려는 시도 자체가 의미없는 행동일지도 모른다.
기억하지 못해도 좋다. 읽는 순간 쉽고 빠르게 이해할 수 있는 코드를 작성하면 되니까.
만약 자신과 함께 일하는 사람이 자신이 작성한 코드도 이해하지 못한다고 생각하면 끔찍할 것이다.
어떻게 해야 내 코드를 처음 보는 사람도 내용을 쉽게 이해하고 편하게 같이 일 할 수 있을까?
정답은 읽기 좋은 코드를 작성하면 된다.
초보 프로그래머는 물론 모든 프로그래머들을 위해
읽기 좋은 코드를 작성하고 싶은 사람들을 위한 책을 소개한다.
읽기 좋은 코드가 좋은 코드다 - 교보문고
이 책은 코드를 작성할 때 언제나 적용할 수 있는 기본적인 원리와 실전적인 기술에 초점을 맞추고 있다. 누구나 쉽게 이해할 수 있는 코드를 예제로 사용하고, 각 장은 코딩과 관련한 다양한 측
www.kyobobook.co.kr
삼성 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 |