티스토리 뷰

 

Clean Code 클린 코드
로버트 C. 마틴 저/박재호,이해영 공역

 

차례  

 

1장. 깨끗한 코드
2장. 의미 있는 이름
3장. 함수
4장. 주석

5장. 형식 맞추기
6장. 객체와 자료 구조
7장. 오류 처리
8장. 경계
9장. 단위 테스트
10장. 클래스
11장. 시스템
12장. 창발성
13장. 동시성
14장. 점진적인 개선
15장. JUnit 들여다보기
16장. SerialDate 리팩터링
17장. 냄새와 휴리스틱

 

추천사

5S 철학

1. 정리(Seiri) 또는 조직("정렬(sort)"이라고도 한다)
2. 정돈(Seiton) 또는 단정함("체계화"라고도 한다)
3. 청소(Seiso) 또는 정리("광내기"라 한다)
4. 청결(Seiketsu) 또는 표준화
5. 생활화(Shutsuke)

 

1장. 깨끗한 코드

기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 바로 이것이 프로그래밍이다. 이렇게 명시한 결과가 바로 코드다.

우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 우리 모두는 대충 짠 프로그램이 돌아간다는 사실에 안도감을 느끼며 그래도 안 돌아가는 프로그램보다 돌아가는 쓰레기가 좋다고 스스로를 위로한 경험이 있다. 다시 돌아와 나중에 정리하겠다고 다짐했었다. 물론 그때 그 시절 우리는 르블랑의 법칙(Leblanc's Law)을 몰랐다. 나중은 결코 오지 않는다.

나쁜 코드의 위험을 이해하지 못하는 관리자의 말을 그대로 따르는 행동은 전문가답지 못하다.

깨끗한 코드란?
http://devsong.tistory.com/161

 

2장. 의미 있는 이름


이름을 잘 짓는 간단한 규칙

1. 의도를 분명히 밝혀라.
2. 그릇된 정보를 피하라.
3. 의미 있게 구분하라.
4. 발음하기 쉬운 이름을 사용하라.
5. 검색하기 순운 이름을 사용하라.
6. 인코딩을 피하라.
7. 자신의 기억력을 자랑하지 마라.
8. 기발한 이름은 피하라.
9. 한 개념에 한 단어를 사용하라.
10. 말장난 하지 마라.
11. 해법 영역에서 가져온 이름을 사용하라.
12. 문제 영역에서 가져온 이름을 사용하라.
13. 의미 있는 맥락을 추가하라.
14. 불필요한 맥락을 없애라.

 

3장. 함수

함수를 잘 만드는 법

1. 작게 만들어라!

2. 한 가지만 해라!

3. 함수 당 추상화 수준은 하나로!

4. 서술적인 이름을 사용하라!

5. 부수 효과를 일으키지 마라!

  • 객체 지향 프로그래밍이 나오기 전에는 출력 인수가 불가피한 경우도 있었다. 하지만 객체 지향 언어에서는 출력 인수를 사용할 필요가 거의 없다. 출력 인수를 사용하라고 설계한 변수가 바로 this이기 때문이다.

6. 명령과 조회를 분리하라!

7. 오류 코드보다 예외를 사용하라!

8. 반복하지 마라!

  • 어쩌면 중복은 소프트웨어에서 모든 악의 근원이다.

 

결론

프로그래밍의 기술은 언제나 언어 설계의 기술이다.

대가(master) 프로그래머는 시스템을 (구현할) 프로그램이 아니라 (풀어갈) 이야기로 여긴다. 프로그래밍 언어라는 수단을 사용해 좀 더 풍부하고 좀 더 표현력이 강한 언어를 만들어 이야기를 풀어간다.

 

4장. 주석

"나쁜 코드에 주석을 달지 마라. 새로 짜라." - 브라이언 W. 커니핸, P.J. 플라우거

주석은 나쁜 코드를 보완하지 못한다.
코드로 의도를 표현하라!

좋은 주석

1. 법적인 주석
2. 정보를 제공하는 주석
3. 의도를 설명하는 주석
4. 의미를 명료하게 밝히는 주석
5. 결과를 경고하는 주석
6. TODO 주석
7. 중요성을 강조하는 주석
8. 공개 API에서 Javadocs

 

나쁜 주석

1. 주절거리는 주석
2. 같은 이야기를 중복하는 주석
3. 오해할 여지가 있는 주석
4. 의무적으로 다는 주석
5. 이력을 기록하는 주석
6. 있으나 마나 한 주석
7. 무서운 잡음
8. 함수나 변수로 표현할 수 있다면 주석을 달지 마라.
9. 위치를 표시하는 주석
10. 닫는 괄호에 다른 주석
11. 공로를 돌리거나 저자를 표시하는 주석
12. 주석으로 처리한 코드
13. HTML 주석
14. 전역 정보
15. 너무 많은 정보
16. 모호한 관계
17. 함수 헤더
18. 비공개 코드에서 Javadocs

 

참고

론 제프리즈 외, <Extreme Programming Installed>, 인사이트, 2002
켄트 벡, <켄트 벡의 구현 패턴>, 에이콘출판사, 2008
로버트 C. 마틴 외, <소프트웨어개발의 지혜>, 야스미디어, 2004
에릭 감마, <GoF의 디자인 패턴>, 프로텍미디어, 2015
앤드류 헌트 외, <실용주의 프로그래머>, 인사이트, 20014

 

- James Song

댓글