더스틴 보즈웰, 트레버 파우커/ 임백준, 『 읽기 좋은 코드가 좋은 코드다』, 휴머니스트. 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 |