[CleanCode] - 1. 깨끗한 코드

Young Min Sim ·2021년 4월 6일
1

CleanCode

목록 보기
1/16
post-custom-banner

📚 클린코드 개요

1. 코드란?

  • 요구사항을 표시하는 언어
  • 아무리 언어들의 추상화 수준이 올라간들 코드는 사라지지 않는다.
  • 따라서 좋은 코드를 작성하는 방법 그리고 나쁜 코드를 좋은 코드로 바꾸는 실력을 배워야 한다.

2. 나쁜 코드는 대가를 치룬다.

  • 나쁜 코드를 짜는 이유: 급해서, 서두르느라, 다른 업무가 너무 밀려 후딱 해치우려고
  • 이렇게 짠 나쁜 코드를 두고 모두 '안 돌아가는 프로그램 < 돌아가는 쓰레기'라며 스스로를 위로하고 나중에 정리하겠다고 다짐
  • 하지만 나중은 결코 오지 않는다. (르블랑의 법칙)
  • 나쁜 코드는 장기적으로 팀 생산성이 0에 수렴되도록 만든다.

3. 원초적 난제

  • 프로그래머는 위와 같은 이유로 항상
    '나쁜 코드가 업무 속도를 늦추지만, 기한을 맞추려면 나쁜 코드를 양산할 수 밖에 없다.'
    와 같은 근본적인 난제를 겪게 된다.
  • 하지만 나쁜 코드로는 기한을 맞출 수 없다. 결국 기한을 맞추기 위한 유일한 방법은,
    '언제나 코드를 최대한 깨끗하게 유지하는 습관'이다.
  • 깨진 창문: 나쁜 코드는 나쁜 코드를 유발한다.

4. 깨끗한 코드란?

(깨끗한 코드에 대한 다양한 개발자들의 의견)

  1. '한 가지'에 집중한다.
  2. 작성자의 의도를 명확하게 드러낸다.

    표현은 조금씩 다르지만 결국 '하나의 역할'이라는 동일한 핵심 가치를 강조

  3. 잘 쓴 문장처럼 읽힌다. (가독성)
  4. 테스트 케이스가 동반되어야 한다.

    클린코드를 만들기 위한 리팩토링 -> 리팩토링은 테스트가 동반되어야 함 -> 테스트가 용이한 구조를 작성하다 보면 클린코드를 짜게 됨

  5. 세세한 사항까지 꼼꼼하게 주의를 기울인 코드

5. 깨끗한 코드를 만드는 비결

  1. 중복을 피하라
  2. 추상화를 고려하라

    중복을 피하기 위해 추상화를 할 때 주의해야 하는 점

    중복을 줄이고 재사용성을 늘린다는 목적으로 상속을 남발하여 잘 못된 구조를 짜게 됨.
    이런 경우 합성을 권장

  3. 제대로 표현하라
  4. 한 기능만 수행하라

🧑🏻‍💻 프로그래머로서 가져야 하는 자세

6. 저자의 생각

무술 문파에 절대적으로 옳은 문파가 없듯 이 책 또한 절대적으로 옳지는 않다. 하지만 한 문파에서 실력이 충분히 늘어나면 다른 문파의 장단점을 습득하여 실력을 쌓아나갈 수 있듯이 이 책에서 가르치는 바를 충분히 이해한 다음 다른 경험 많은 집단과 전문가들에게 배우면 좋을 것.

7. 우리는 저자다

한 시간 동안 작업하는 영상을 찍은 뒤 고속 재생을 해보니 코드를 읽는 시간이 코드를 작성하는 시간에 비해 압도적으로 높았다. 즉, 읽기 쉬운 코드는 매우 중요하며, 읽기 쉽게 만들면 짜기도 쉬워진다.

급할 수록, 서둘러야 할 수록, 쉽게 짜고 싶을 수록
읽기 쉽게 만들면 된다. (== 읽기 쉽게 만드는데 시간을 들여라)

8. 보이스카우트 규칙

'캠핑장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라'
클린 코드를 위해서는 시간이 지나도 언제나 깨끗하게 유지해야 한다.
한꺼번에 많은 시간과 노력을 투자해 코드를 정리하려 할 필요가 없다.

  • '변수 이름 하나를 개선'하고,
  • 조금 긴 함수를 분할하고,
  • 약간의 중복을 제거하고,
  • 복잡한 if 문 하나를 정리하면 충분

'지속적인 개선'이야 말로 정말 프로그래머로서 중요한 덕목

9. 결론

클린 코드를 위한 구체적인 방법 소개에 앞서 간단한 개요 및 프로그래머가 가져야 할 자세에 대해 소개한 파트.
아무리 책에서 클린 코드를 위한 기술, 기교를 설명해도 결국 그것을 잘 받아들이는 것은 본인의 몫.
그냥 읽고 '아 그렇구나' 보다는 앞으로 나올 예제 코드와 함께 연습 또 연습하는 것이 유일한 방법.

post-custom-banner

2개의 댓글

comment-user-thumbnail
2021년 4월 26일

평소에 스파게티를 좋아해서 클린 하는 법이 너무 어렵습니다.ㅜㅜ

1개의 답글