[클린코드: Clean Code] 추천사부터 1장 깨끗한 코드까지

devssun 2019. 7. 30. 23:59
728x90
반응형

TDD 스터디를 진행하면서 클린 코드도 봐야할 거 같아 책을 구매하곤 몇 달 지나서 본다 😜

계획세우는 건 언제나..

 

오늘은 추천사부터 1장까지 읽었다. 평소 책을 읽을 땐 (종류불문) 목차보고 바로 본문으로 가는 게 일상인데 제드님 블로그에서 추천사였나 들어가기였나 거기부터 읽을 게 많아 1장까지 들어가는 데 오래 걸렸다는 글을 읽고 나도 추천사부터 읽기 시작했다.

역시나 추천사부터 필요한 이야기와 공감가는 이야기가 가득했다. 


추천사 - James O. Coplien

추천사에는 깨끗한 코드가 왜 중요한지 이유를 작성하였다.

아키텍처를 건축가가 막 지어진 건물을 인도하는 상황으로 비유했다.

...더보기

우리는 (소프트웨어) 공장을 전속력으로 가동해 소프트웨어를 재빨리 내놓고 싶어한다.

여기서 (소프트웨어) 공장이란 사람 공장이다.

또 5S 원칙을 이야기했다. 5S 원칙은 Lean의 토대이며 선택이 아닌 필수라고 한다.

정리 (Seiri) 또는 조직 ("정렬") 적절한 명명법 등과 같은 방법을 사용, 무엇이 어디에 있는 지 알아야 한다
정돈 (Seiton) 또는 단정함 ("체계화") 코드는 누구나 예상하는 위치에 있어야 한다. 
청소 (Seiso) 또는 정리 ("광내기") 작업 공간에 있는 주석이나 주석으로 처리한 코드는 지운다. 
청결 (Seiketsu) 또는 표준화 코드 스타일을 정하고 따른다
생활화 (Shutsuke) 또는 규율 규칙을 생활화한다

 

그리고 중요한 점은 아키텍처도 깨끗한 코드도 완벽을 주장하는 것이 아니다. 최선을 다해 정직하라 요구하는 것이다.

코드는 결코 완벽하지 않으므로 나의 것을 드러내며 최선을 다해 깨끗한 코드를 만든다.


들어가면서

깨끗한 코드를 작성하는 방법은 배우기 어렵다.

단순히 원칙과 패턴을 안다고 깨끗한 코드가 나오지 않는다. 고생을 해야 한다.


1장 깨끗한 코드

이 책을 읽고 있다면! 첫째, 프로그래머라서. 둘째, 더 나은 프로그래머가 되려고!

나도 그렇다!!!!

 

프로그래머라면 나쁜 코드로 고생한 경험이 있다. 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다.

그리고 돌아가는 쓰레기가 좋다고 스스로 위로한 경험이 있다.

* 르블랑의 법칙(leblanc's Law) - 나중은 결코 오지않는다.

   -> 르블랑의 법칙대로 나중, 나중 하다가 결국 쓰레기 코드에 파묻히게 된다

 

- 태도

프로젝트 관리자는 일정을 잡으며 우리에게 도움을 청한다. 개발자도 프로젝트 계획에 깊숙히 관여하므로 프로젝트 실패는 우리에게도 커다란 책임이 있다. 나쁜 코드가 초래하는 실패에는 더더욱 책임이 크다.

일정에 쫓기더라도 대다수 관리자는 좋은 코드를 원한다.

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

 

- 깨끗한 코드라는 예술?

깨끗한 코드와 나쁜 코드를 구분할 줄 안다고 깨끗한 코드를 작성할 줄 안다는 뜻은 아니다.

"코드 감각"

  - 타고나거나 투쟁해서 얻어내야 한다. 코드 감각이 있으면 좋은 코드와 나쁜 코드를 구문할 수 있고

  - 나쁜 코드를 좋은 코드로 바꿀 수 있는 전력도 파악한다.

 

- 깨끗한 코드란?

"비야네 스트롭스트룹" (C++ 창시자, 이름이 특이하심)

  - 논리가 간단해야 버그가 숨어들지 못한다. 의존성을 최대한 줄여야 유지보수가 쉬워진다. 오류는 명백한 전략에 의거해 철저히 처리한다

  - "깨진 창문" : 창문이 깨진 건물은 누구도 상관하지 않는다. 일단 창문이 깨지고 나면 쇠퇴하는 과정이 시작된다

 

"그래디 부치"

  - 깨끗한 코드는 단순하고 직접적이다. 잘 쓴 문장처럼 읽힌다.

 

" '큰' 데이브 토마스"

  - 깨끗한 코드는 작성자 외의 사람도 읽고 고치기 쉽다.

  - 단위 테스트 케이스와 인수 테스트 케이스가 존재한다. 깨끗한 코드에는 의미 있는 이름이 붙는다.

  - 의존성은 최소이며 각 의존성을 명확히 정의한다.

 

"마이클 페더스"

  - 깨끗한 코드는 누군가 주의 깊게 짰다는 느낌을 준다

 

"론 제프리스" (엄청 길게 쓰심)

  - 요약하면, 중복을 피하라, 한 기능만 수행하라, 제대로 표현하라, 작게 추상화하라

 

"위드 커닝햄"

  - 코드를 읽으며 짐작했던 기능을 그래도 수행한다면 깨끗한 코드라 부를 수 있다


보이스카우트 규칙

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

  - 한꺼번에 많은 것을 정리하려고 하지 않아도 된다. 변수 이름 하나를 개선하고, 조금 긴 함수 하나를 분할하고, 약간의 중복을 제거하고, 복잡한 If 문 하나를 정리하면 충분하다.

  - 시간이 지날수록 좋아지는 코드를 볼 수 있을 것이다.

 


미뤄둔 클린 코드를 읽으면서 그동안 내가 했던 고민이 누군가 다 겪었던 고민이라는 것을 알게 되었다.

여기서 알려 주는 데로 열심히 적용해보면서 코드를 정리해봐야겠다.

오늘부터 시작!

반응형