1장 - 깨끗한 코드

깨끗한 코드의 정의는 프로그래머 수만큼이나 다양하다.

코드가 있을지어다

나쁜 코드

예시: Killer App을 구현한 회사가 있었다. 이전 버전에 있던 버그가 다음 버전에도 남아있었다. 출시에 바빠 코드를 마구 짠 나머지, 그 나쁜 코드 때문에 회사가 망했다.

우리는 대충 짠 코드가 돌아가는 것을 보며 나중에 손보겠다고 다짐한다. 그러나 나중은 절대 오지 않는다.

나쁜 코드로 치르는 대가

태도

원초적 난제

기한을 맞추는 유일한 방법은, 그러니까 빨리 가는 유일한 방법은 언제나 코드를 최대한 깨끗하게 유지하는 습관이다.

깨끗한 코드라는 예술?

깨끗한 코드를 어떻게 작성할까?

깨끗한 코드란?

깨끗한 코드의 정의는 프로그래머 수만큼이나 다양하다.

✧ Bjarne Stroustru (inventor of C++ and author of The C++ Programming Language)

우아한(보는 이에게 즐거움을 선사하는)
효율적인(속도뿐만 아니라 CPU 자원을 낭비하지 않는) 코드

✧ Grady Booch (author of Object Oriented Analysis and Design with Applications)

가독성 높은 코드

= 잘 쓴 문장처럼 읽힌다.
= 설계자의 의도가 바로 드러난다.
= 해결할 문제의 명백한 해법을 제시한다.

✧ “Big” Dave Thomas (founder of OTI, godfather of the Eclipse strategy

다른 사람이 고치기 쉬운 코드
문학적인 코드(인간이 읽기 좋은 코드)

✧ Michael Feathers (author of Working Effectively with Legacy Code)

주의 깊게 짠 코드

✧ Ron Jeffries (author of Extreme Programming Installed and Extreme Programming Adventures in C#)

 깨끗한 코드는 다음과 같은 규칙으로 구현한다.

1. 모든 테스트를 통과한다
2. 중복이 없다
3. 시스템 내 모든 설계 아이디어를 표현한다
4. 클래스, 메서드, 함수 등을 최소화한다

✧ Ward Cunningham (inventor of Wiki, inventor of Fit, co-inventor of extreme Programming. Motive force behind Design Patterns. Smalltalk and OO thought leader. The godfather of all those who care about code)

짐작했던 기능을 그대로 수행하는 코드
아름다운 코드

우리는 저자다

우리의 코드를 보고 판단을 내릴 독자가 있다는 사실을 기억해야 한다. 저자에게는 독자와 잘 소통할 책임이 있다.
새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다. 기존 코드를 읽는 비율이 높으므로 읽기 쉬운 코드가 매우 중요하다. 주변 코드가 읽기 쉬우면 새 코드를 짜기도 쉽다. 그러므로 급하다면, 서둘러 끝내려면, 쉽게 짜라면, 읽기 쉽게 만들면 된다.

보이스카우트 규칙

잘 짠 코드가 전부는 아니다. 시간이 지나도 언제나 깨끗하게 유지해야 한다.

캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라

결론

이 책을 읽는다고 뛰어난 프로그래머가 되거나 코드 감각을 확실히 얻는다는 보장도 없다. 단지 뛰어난 프로그래머가 생각하는 방식과 그들이 생각하는 기술과 기교와 도구를 소개할 뿐이다. 나머지는 여러분에게 달렸다.

Footnotes

  1. 깨진 창문: 창문이 깨진 건물은 누구도 상관하지 않는다는 인상을 풍긴다. 그래서 창문이 더 깨지거나 더러워져도 아무도 상관하지 않고 결국 방치되어 쇠퇴한다.