개발의 즐거움

[책정리]읽기 좋은 코드가 좋은 코드다

[짱가™] 2012. 7. 14. 13:48


읽기 좋은 코드가 좋은 코드다

저자
더스틴 보즈웰 지음
출판사
한빛미디어 | 2012-04-06 출간
카테고리
컴퓨터/IT
책소개
이 책은 코드를 작성할 때 언제나 적용할 수 있는 기본적인 원리...
가격비교



( 맨날 뭐 하려고 하면 거창하게 생각하고 거창하게 시작해서 아무것도 못하는 것 같아서... 

스텝 바이 스텝으로 천천히 생각하기로 했다. 



오늘부터 한 챕터씩 '읽기 좋은 코드가 좋은 코드다' 를 정리해보기로 했다.


'소설처럼 읽히는 코드' - 이게 내 평소 지론이다. 

이것을 도와주는 책으로는 국내 책중에는 현재까지는 Clean Code 가 최고였다만,,,, 

이 책 역시 던져주는 메시지가 꽤 좋으므로... 정리. 





목차는 다음과 같다. 


1장. 코드는 이해하기 쉬워야 한다
   01. 무엇이 코드를 '더 좋게' 만드는가?  
   02. 가독성의 기본 정리  
   03. 분량이 적으면 항상 더 좋은가?  
   04. 이해를 위한 시간은 다른 목표와 충돌하는가?  
   05. 어려운 부분  

PART I. 표면적 수준에서의 개선

2장. 이름에 정보 담기
   01. 특정한 단어 고르기  
   02. tmp나 retval 같은 보편적인 이름 피하기  
   03. 추상적인 이름보다 구체적인 이름을 선호하라  
   04. 추가적인 정보를 이름에 추가하기  
   05. 이름은 얼마나 길어야 하는가?  
   06. 이름 포메팅으로 의미를 전달하라  
   요약  

3장. 오해할 수 없는 이름들
   01. 예: Filter()  
   02. 예: Clip(text, length)  
   03. 경계를 포함하는 한계값을 다룰 때는 min과 max를 사용하라  
   04. 경계를 포함하는 범위에는 first와 last를 사용하라  
   05. 경계를 포함하고/배제하는 범위에는 begin과 end를 사용하라  
   06. 불리언 변수에 이름 붙이기  
   07. 사용자의 기대에 부응하기  
   08. 예: 이름을 짓기 위해서 복수의 후보를 평가하기  
   요약  

4장. 미학
   01. 미학이 무슨 상관인가?  
   02. 일관성과 간결성을 위해서 줄 바꿈을 재정렬하기  
   03. 메소드를 활용하여 불규칙성을 정리하라  
   04. 도움이 된다면 코드의 열을 맞춰라  
   05. 의미 있는 순서를 선택하고 일관성 있게 사용하라  
   06. 선언문을 블록으로 구성하라  
   07. 코드를 '문단'으로 쪼개라  
   08. 개인적인 스타일 대 일관성  
   요약  	
	
5장. 주석에 담아야 하는 대상
   01. 설명하지 말아야 하는 것  
   02. 생각을 기록하라  
   03. 코드를 읽는 사람의 입장이 되어라  
   04. 마지막 고찰 - 글 쓰는 두려움을 떨쳐내라  
   요약  
	
6장 명확하고 간결한 주석 달기
   01. 주석을 간결하게 하라  
   02. 모호한 대명사는 피하라  
   03. 엉터리 문장을 다듬어라  
   04. 함수의 동작을 명확하게 설명하라  
   05. 코너케이스를 설명해주는 입/출력 예를 사용하라  
   06. 코드의 의도를 명시하라  
   07. 이름을 가진 함수 파라미터 주석  
   08. 정보 축약형 단어를 사용하라  
   요약  
	
PART II. 루프와 논리를 단순화하기

7장. 읽기 쉽게 흐름제어 만들기
   01. 조건문에서 인수의 순서  
   02. if/else 블록의 순서  
   03. (삼항 연산자로 알려진)?:를 이용하는 조건문 표현  
   04. do/while 루프를 피하라  
   05. 함수 중간에서 반환하기  
   06. 악명 높은 goto  
   07. 중첩을 최소화하기  
   08. 실행 흐름을 따라올 수 있는가?  
   요약  
	
8장. 거대한 표현을 잘게 쪼개기
   01. 설명 변수  
   02. 요약 변수  
   03. 드모르간의 법칙 사용하기  
   04. 쇼트 서킷 논리 오용하기  
   05. 예: 복잡한 논리와 씨름하기  
   06. 거대한 구문 나누기  
   07. 표현을 단순화하는 다른 창의적인 방법들  
   요약  
	
9장. 변수와 가독성
   01. 변수 제거하기  
   02. 변수의 범위를 좁혀라  
   03. 값을 한 번만 할당하는 변수를 선호하라  
   04. 마지막 예  
   요약  
	
PART III. 코드 재작성하기

10장. 상관없는 하위문제 추출하기
   01. 소개를 위한 예: findClosestLocation()  
   02. 순수한 유틸리티 코드  
   03. 일반적인 목적의 코드  
   04. 일반적인 목적을 가진 코드를 많이 만들어라  
   05. 특정한 프로젝트를 위한 기능  
   06. 기존의 인터페이스를 단순화하기  
   07. 자신의 필요에 맞춰서 인터페이스의 형태를 바꾸기  
   08. 지나치게 추출하기  
   요약  
	
11장. 한 번에 하나씩
   01. 작업은 작을 수 있다  
   02. 객체에서 값 추출하기  
   03. 더 큰 예제  
   요약  
	
12장. 생각을 코드로 만들기
   01. 논리를 명확하게 설명하기  
   02. 라이브러리를 알면 도움이 된다  
   03. 논리를 쉬운 말로 표현하는 방법을 더 큰 문제에 적용하기  
   요약  
	
13장. 코드 분량 줄이기
   01. 그 기능을 구현하려고 애쓰지 마라 - 그럴 필요가 없다  
   02. 요구사항에 질문을 던지고 질문을 잘게 나누어 분석하라  
   03. 코드베이스를 작게 유지하기  
   04. 자기 주변에 있는 라이브러리에 친숙해져라  
   05. 예: 코딩 대신 유닉스 도구를 활용하기  
   요약  

PART IV. 선택된 주제들
	
   14장. 테스트와 가독성
   01. 읽거나 유지보수하기 쉽게 테스트를 만들어라  
   02. 이 테스트는 어떤 점이 잘못되었을까?  
   03. 이 테스트를 더 읽기 쉽게 만들기  
   04. 읽기 편한 메시지 만들기  
   05. 좋은 테스트 입력값의 선택  
   06. 테스트 함수에 이름 붙이기  
   07. 이 테스트 코드는 무엇이 잘못되었는가?  
   08. 테스트에 친숙한 개발  
   09. 지나친 테스트  
   요약  
	
15장. '분/시간 카운터'를 설계하고 구현하기
   01. 문제  
   02. 클래스 인터페이스 정의하기  
   03. 시도1: 순진한 해결책  
   04. 시도2: 컨베이어 벨트 설계  
   05. 시도3: 시간-바구니 설계  
   06. 3가지 해결책 비교하기   

   요약  



이책 정리 하고 나서는... 다음 책은 (지앤선) 의 '자바파워툴'  을 정리해봐야지... 
- 이놈은 내용이 많아서 간략하게만 해야겠다... ^^;;