본문 바로가기
일반 책 리뷰

[책] 읽기 좋은 코드가 좋은 코드다 - 더스틴 보즈웰, 트레버 파우커

by 크라크라 2018. 3. 17.
읽기 좋은 코드가 좋은 코드다
국내도서
저자 : 더스틴 보즈웰,트레버 파우커 / 임백준역
출판 : 한빛미디어 2012.04.10
상세보기



 이 책은 프로그래밍의 숙적 혹은 숙명에 관한 책이다. 바로 "좋은 코드란 무엇인가"에 대한 질문 그리고 그에 대한 답변들이 정리되어 있다. 사실, 좋은 코드란 무엇이냐는 질문은 프로그래밍이라는 개념이 생긴 뒤부터 지금까지 쭉 이어져 오는 것이다. 


 프로그래밍이 시작된 이래로 여러 가지 고민 사항들이 있어왔다. 


 당장 처음 시작할 때부터 15년 전까지만 해도 메모리 관리라는 것은 엄청난 문제였다. 하드웨어 적인 제약사항이 너무나도 컸기 때문이다. 그래서 프로그래머들은 언제나 절묘하게 메모리를 관리할 수 있는 능력이 있어야했다. 그러나 현재 시점에 와서는 하드웨어의 제약사항은 거의 없는 것이나 마찬가지다. 프로그램 하나가 수십기가씩 하는 경우도 다반사요, 작업을 할 때 메모리를 16GB 이상씩 끼고 쓰기도 하고, 하드웨어는 이제는 테라바이트 단위로 나오는 시대가 되었다. 그래서 이제는 하드웨어 적인 문제는 상대적으로 중요도가 낮아졌다고 봐도 될 듯하다.


 그러나 옛날부터 지금까지 꾸준히 제기되는 문제는 바로 좋은 코드를 작성할 수 있느냐이다. 사실 하드웨어의 성능이 좋아진만큼 코드를 작성할 때 상대적으로 낮은 기준을 적용해도 되는 것이었으나 반대로 프로그램의 크기가 증가하면서 어려워진 것도 사실이다. 프로그램의 크기가 커지면서 프로그래밍이라는 것은 이제는 많은 경우에 혼자 하기는 어려운 일이 되었다.  프로그래밍은 협업을 해야하며, 분업해야하는 일이다. 그럼 필연적으로 나의 코드를 남이 봐야 하는 일이 과거보다 많아질 수밖에 없다는 뜻이다. 더욱이 사람은 각자의 경험과 능력이 다르기 때문에 모두가 최고의 프로그래머 일 수는 없으며, 아직도 제대로 된 교육과정이 정착되지 않은 전문 기술의 영역이기 때문에 좋은 코드를 작성하는 능력은 모두 다를 수밖에 없다. 여기에 만약 기획이나 기능이 초기 단계부터 잘 못되어서 잘못된 구조를 가지게 된다면? 

 

 그래서 언제나 좋지 못한 코드는 발생할 수 있고 이런 코드들은 결국 프로그래밍의 효율성을 떨어뜨린다. 그래서 끊임 없이 얘기하는 것이 "코드의 부채", "기술 부채", "리팩토링" , "유닛테스트" 등등.. 많은 개념과 방법론들이 제시된다. 이 책은 그 중의 일부를 실행하는 테크닉에 대한 내용이다. 


일단 읽기 쉽고, 보기 쉽다는 점이 최고 장점이라는 점을 먼저 언급하겠다.



 저자들의 핵심 아이디어는 크게 두 가지이다. 


 (1) 코드는 이해하기 쉬워야 한다.

 (2) 코드는 다른 사람이 그것을 이해하는 데 들이는 시간을 최소화하는 방식으로 작성되어야 한다. 


내용적으로는 다음 순서를 따라간다.


표면적인 수준에서의 개선 -> 루프와 논리를 단순화하기 -> 코드 재작성하기(리팩토링) -> 테스트와 가독성





대표적인 것을 몇 가지만 언급하자면 다음과 같다. 


 - 름을 잘 지어라 : 


   이 변수가 무엇을 뜻하는가? 변수가 뜻하고 있는 바를 제대로 전달하고 있는가? 구체적인 이름인가? 

   기능이 명확하다면, 사람들이 도저히 오해할 수 없는 이름을 지어라. 


 - 코드를 보기 쉽게, 아름답게 짜라 :


   줄바꿈을 일관된 기준에 맞춰서 정렬할 것. 

   코드의 열을 맞추고, 코드를 문단 그리고 블록별로 정리해서 사용할 것


- 명확하고 간결한 주석을 달아라 : 


  이미 변수나 함수 이름을 제대로 지었다면, 굳이 주석을 달지 않는게 좋을 때도 많다. 주석은 때에 따라서 수정하지 못하고 넘어가는 경우도 있을 수 있기 때문. 

 글을 쓰는 것을 두려워하지 말고, 읽는 사람의 입장에서 생각해봐라.

 주석은 간결한 것이 좋고, 모호한 대명사는 피하고, 동작을 명확하게 설명해야 한다. 

 경우에 따라서는 예시도 포함되면 좋다.

 의도도 꼭 알려줄 수 있도록

 

- 실행 흐름을 명확하게 짜라 : 


 반복문이나 조건문을 이용해서 복잡한 구조를 만들다보면 자신도 흐름을 놓치는 일이 발생하기 마련이다. 

 여러 개를 한 번에 하려하지 말고 쪼개도록 해라. 

 Do While, GoTo, 함수 중간에서 반환하기 등은 코드의 가독성을 해치므로 되도록 사용을 자제할 것

 중첩반복문은 최소화해라.





 이 책을 읽고 난다면 간단한 실전 테크닉들을 배우게 될 것이다. 이 책은 꼭 읽고 끝내는 것이 아니라 따라해보면서, 혹은 깊은 이해를 하려고 노력하면서 몸에 체득했으면 한다.


댓글