Clean Code - 01. 깨끗한 코드

더 나은 프로그래머가 되자!

이 책을 읽고 나면

  • 코드에 대해 많은 사실을 배울 수 있음
  • 좋은 코드와 나쁜 코드를 구분하는 능력 습득
  • 좋은 코드를 작성하는 방법 습득

코드 : 요구사항을 상세히 표현하는 수단

프로그래밍 : 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업

나쁜 코드

  • 급해서, 서두르느라
  • 제대로 짤 시간이 없다고 생각해서
  • 코드를 다듬느라 시간을 보냈다가 상사한테 욕 먹을까봐
  • 지겨워서 빨리 끝내려고
  • 다른 업무가 너무 밀려 후딱 해치우고 밀린 업루고 멀어가려고
    자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다.
    -> 나중은 결코 오지 않는다

좋은 코드를 사수하는 일은 바로 우리 프로그래머들의 책임이다.
언제나 코드를 최대한 깨끗하게 유지하는 습관을 가지자!

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

깨끗한 코드가 무엇인지 모르면 깨끗한 코드를 만들려고 애써봤자 소용이 없다.
깨끗한 코드와 나쁜 코드를 구분할 줄 안다고 깨끗한 코드를 작성할 줄 안다는 뜻은 아니다.
깨끗한 코드를 작성하려면 ‘청격’이라는 힘겹게 습득한 감각을 활용해 자잘한 기법들을 적용하는 절제와 규율이 필요하다.
-> 열쇠는 ‘코드 감각’

깨끗한 코드란?

Bjarne Stroustrup (비야네 스트롭스트룹)

깨끗한 코드는 ‘보기에 즐거운’ 코드
나쁜 코드는 나쁜 코드를 ‘유혹’한다 (깨진 유리창 이론)
철저한 오류 처리 - 메모리 누수, 경쟁 상태, 일관성 없는 명명법 등 -> 깨끗한 코드는 세세한 사항까지 꼼꼼하게 처리하는 코드
깨끗한 코드란 한 가지에 ‘집중’한다.

Grady Booch (그래디 부치)

가독성 - 깨끗한 코드는 잘 쓴 문장처럼 읽혀야 한다.
명쾌한 추상화 - 코드는 추측이 아니라 사실에 기반해야 한다. 반드시 필요한 내용만 담아야 한다.

Dave Thomas (데이브 토마스)

깨끗한 코드란 다른 사람이 고치기 쉽다.
테스트 케이스가 없는 코드는 깨끗한 코드가 아니다.
인간이 읽기 좋은 코드를 작성하라.

Michael Feathers (마이클 페더스)

깨끗한 코드는 주의 깊게 작성한 코드다.

Ron Jeffries (론 제프리스)

중복 줄이기, 표현력 높이기, 초반부터 간단한 추상화 고려하기

Ward Cunningham (워드 커닝햄)

읽으면서 짐작한 대로 돌아가는 코드가 깨끗한 코드다.
코드가 그 문제를 풀기 위한 언어처럼 보인다면 아름다운 코드다.

우리는 저자다

저자에게는 독자와 잘 소통할 책임도 있다.
다음에 코드를 짤 때는 자신이 저자라는 사실을, 여러분의 노력을 보고 판단을 내릴 독자가 있다는 사실을 기억하기 바란다.
새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다.

보이스카우트 규칙

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

잘 짠 코드가 전부는 아니다. 시간이 지나도 언제나 깨끗하게 유지해야 한다.
체크아웃할 때보다 좀 더 깨긋한 코드를 체크인한다면 코드는 절대 나빠지지 않는다.
한꺼번에 많은 시간과 노력을 투자해 코드를 정리할 필요가 없다.
변수 이름 하나를 개선하고, 조금 긴 함수 하나를 분할하고, 약간의 중복을 제거하고, 복잡한 if문 하나를 정리하면 충분하다.

내 생각

현재 회사에서 담당한 프로젝트가 정말… 기능 하나 추가하려면 분석이 9:1일 정도로 로직이 복잡하다.
모듈화와 확장성을 고려하다 보니 그런 함수들을 만들게 된 것 같지만…
그리고 너무 많은 사람들이 규칙없이 코드를 추가한 것도 한몫하지 않았나 싶다.
나부터라도 나서서 고친다면 내 다음 사람은 지금의 나보다 이 시스템을 파악하는데 좀 더 편해질 수 있지 않을까? 한 번 힘내보자고~!

태그:

카테고리:

업데이트: