본문 바로가기

Programming

[도서]읽기 좋은 코드가 좋은 코드다

더스틴 보즈웰, 트레버 파우커/ 임백준, 『 읽기 좋은 코드가 좋은 코드다』, 휴머니스트. 2012

 

 

 

목차

더보기

표면적 수준에서의 개선 

  • 코드는 이해하기 쉬워야 한다 
  • 이름에 정보 담기 
  • 오해할 수 없는 이름들 
  • 미학 
  • 주석에 담아야 하는 대상 
  • 명확하고 간결한 주석 달기 

 

루프와 논리를 단순화하기 

  • 읽기 쉽게 흐름제어 만들기 
  • 거대한 표현을 잘게 쪼개기 
  • 변수와 가독성 

 

코드 재작성하기 

  • 상관없는 하위문제 추출하기 
  • 한 번에 하나씩 
  • 생각을 코드로 만들기 
  • 코드 분량 줄이기 

 

 


표면적 수준에서의 개선
좋은 이름을 짓고, 좋은 설명을 달고, 정렬로 코드를 보기 좋게 하자

 

1.네이밍 :

  • 유의어 색인집을 적극 화룡, 상황에 더 적합한 단어를 찾는다.

 

2.중요한 속성 표현하기:

  • time_ms 
  • 헝가리안 표기법

3. 오해할 수 없는 이름들

  • Limit 30  ←  30 포함일까? (bad)
  • Max 30 / Min 30  ←  30 포함
  • First 30 / Last 30  ←  30 포함     
  • Begin 30 / End 30 ← 30 포함/ 30 불포함
  • 이름을 짓기 까지 여러 후보를 생각해두는 노력을 기울이자 

 

4.미학

  • 코드 읽는 사람 기대에 부응하기
    • 이쯤에는 ~가 있을 것이다. 이건 이렇게 사용될 것이다.
  • 코드 열 맞춤의 시각적 효과
  • 비슷한 코드는 서로 비슷해 보이게 만들어라

    

5. 주석

  • 코드의 결함을 설명해라
  • 해당 값의 이유를 설명해라
  • 코드 읽는 사람 입장에서 어떤 정보가 필요한지 유추해라
  • 있음직한 오해/함정에 대해 경고한다.
  • 모호한 대명사는 피해라 (ex) 이,그,저
  • 입/출력 예시를 사용
  • 코드의 의도를 명시

 

6.루프문

  • 부정보다는 긍정을 먼저 다루어라
  • 간단한 것을 먼저 처리해라
  • 중첩 최소화 해라 (조건에 맞지 않을 경우 탈출을 빠르게)

 

7.가독성을 늘리기 위해서는 코드를 늘려야 하는 경우도 있다.

//(전)
assert(bucket=Find(key))||(!bucket->opccupied())

//(후)
bucket = Find(key) 
if (bucket ~= nil) 
	assert(!bucket->occupied())

 

 

8.기존의 인터페이스를 단순화 해라

  • 자신이 사용하는 인테페이스가 깔끔하지 않다면 깔끔한 덮개로 보완할 수 있다.
  • 함수를 추가하여 인터페이스 단순화

 

9.한 번에 하나씩

  • 한 번에 여러가지 일을 수행하는 코드는 이해하기 어렵다

'Programming' 카테고리의 다른 글

Git 기본 커맨드 정리  (0) 2020.04.14
Shader  (0) 2020.04.10
객체지향  (2) 2020.04.04
문자열 리터럴 상수  (0) 2020.04.04
빌드 과정  (0) 2020.03.18