Book

[Clean Code] TIL - 220123

refigo 2022. 1. 23. 18:25
1장. 깨끗한 코드

 

뛰어난 프로그래머들이 생각하는 깨끗한 코드

 

1. 생각

깨끗한 코드는 섬세하고 단순해서 보기 좋은 코드 같다.

솔직히 아직 예시를 보지 않아서 감이 잡히지 않는다.

이런 코드를 작성하려면 훈련을 통해 감각을 길러야 한다.

뛰어난 프로그래머들이 시행착오 끝에 찾은 방법들이 이 책에 있다.

그들의 방법을 꼭꼭 씹어서 잘 소화시키자.

 

2. 기억하고 싶은 문장들

- 깨끗한 코드라는 예술?

다시 말해, 깨끗한 코드와 나쁜 코드를 구분할 줄 안다고 깨끗한 코드를 작성할 줄 안다는 뜻은 아니다.
깨끗한 코드를 작성하려면 '청결'이라는 힘겹게 습득한 감각을 활용해 자잘한 기법들을 적용하는 절제와 규율이 필요하다. 열쇠는 '코드 감각'이다.

 

- 깨끗한 코드란?

비야네 스트롭스트룹(Bjarne Stroustrup)
비야네에 따르면 깨끗한 코드는 '보기에 즐거운' 코드다.
나쁜 코드는 나쁜 코드를 '유혹'한다! 흔히 나쁜 코드를 고치면 오히려 더 나쁜 코드를 만든다는 뜻이다.
한 마디로 요약하면, 깨끗한 코드는 세세한 사항까지 꼼꼼하게 처리하는 코드다.
마지막으로 비야네는 깨끗한 코드란 한 가지를 잘 한다고 단언한다.
나쁜 코드는 너무 많은 일을 하려 애쓰다가 의도가 뒤섞이고 목적이 흐러진다.
 
그래디 부치(Grady Booch)
깨끗한 코드는 잘 쓴 문장처럼 읽힌다.
명쾌한 추상화와 단순한 제어문으로 가득하다.
코드는 추측이 아니라 사실에 기반해야 한다. 반드시 필요한 내용만 담아야 한다. 코드를 읽는 사람에게 프로그래머가 단호하다는 인상을 줘야 한다.
 
Big 데이브 토마스(Dave Thomas)
데이브는 깨끗한 코드란 다른 사람이 고치기 쉽다고 단언한다.
테스트 케이스가 없는 코드는 깨끗한 코드가 아니다.
명백히 그가 큰 코드보다 작은 코드에 가치를 둔다는 의미다. 이는 우리 분야가 탄생한 이래로 소프트웨어 문헌에서 계속 반복되는 교훈이기도 하다. 작을수록 좋다.
 
마이클 페더스(Michael Feathers)
깨끗한 코드는 주의 깊게 작성한 코드다.
 
론 제프리스(Ron Jeffries)
짤막한 문단 몇 개로 론은 이 책 내용을 요약했다. 중복을 피하라. 한 기능만 수행하라. 제대로 표현하라. 작게 추상화하라. 이상이다.
 
워드 커닝햄(Ward Cunningham)
읽으면서 짐작한 대로 돌아가는 코드가 깨끗한 코드다. 명백하고 단순해 마음이 끌리는 코드가 깨끗한 코드다.
언어를 단순하게 보이도록 만드는 열쇠는 프로그래머다!
 

- 우리들 생각

이 책은 우리 오브젝트 멘토 진영이 생각하는 깨끗한 코드를 설명한다.
하지만 우리 생각이 절대적으로 '옳다'는 단정이다. 우리들 못지않게 경험 많은 집단과 전문가가 존재한다. 마땅히 그들에게 배우라고 권한다.
하지만 한편으로 이 책은 우리가 오랫동안 고민하고 숙고한 교훈과 기법을 권고한다. 수십 년에 걸친 경험과 반복적인 시행착오로 습득한 교훈과 기법이다.
 

- 우리는 저자다.

다음에 코드를 짤 때는 자신이 저자라는 사실을, 여러분이 노력을 보고 판단을 내릴 독자가 있다는 사실을 기억하기 바란다.
코드를 읽는 시간 대 코드를 짜는 시간 비율이 10대 1을 훌쩍 넘는다. 새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다.
비율이 이렇게 높으므로 읽기 쉬운 코드가 매우 중요하다.
 

- 보이스카우트 규칙

시간이 지나도 언제나 깨끗하게 유지해야 한다.
캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라.
한꺼번에 많은 시간과 노력을 투자해 코드를 정리할 필요가 없다.
지속적인 개선이야말로 전문가 정신의 본질이 아니던가?
 

- 결론

단지 뛰어난 프로그래머가 생각하는 방식과 그들이 사용하는 기술과 기교와 도구를 소개할 뿐이다.