클린 코드 요약 정리 Ch.1


클린 코드를 번역/요약한 글입니다.


스스로를 “프로”라고 부르기 위해선 반드시 클린 코드를 작성할 줄 알아야 한다. 클린 코드를 작성하기 위해 최선을 다해야만 한다.

도입 (Introduction)

  • 클린 코드를 작성하는 방법을 배우는 것은 어렵다. 단순히 원칙이나 패턴들을 외운다고 되는 것이 아니라, 그것들을 몸으로 체득해야만 한다.
  • 이 책을 통해 배운 내용들을 반드시 연습해보라. 눈으로만 읽고 넘기면 아무 소용없다.

나쁜 코드 (Bad Code)

  • 나쁜 코드는 회사를 망하게 할 수도 있다.
  • 자신이 짠 쓰레기같은 코드를 보며 “나중에 고쳐야지”라고 다짐한 적이 있을 것이다. 하지만 르블랑의 법칙에 의하면 나중은 절대 오지 않는다.

전면 재설계 (The Grand Redesign in the Sky)

  • 클린 코드를 유지하기 위해 노력하는 것은 비용 효율적인 문제뿐만 아니라 생존과도 직결되어 있는 문제이다.

태도 (Attitude)

  • 한 시간이면 해결될 일을 몇 주에 걸쳐 했다든가, 한 줄만 고치면 될 것을 수백 개의 모듈을 건드린 적이 있는가? 이는 우리가 프로답지 못했기 때문에 발생한 일이다.
  • 스케줄과 요구 사항을 사수하는 것은 매니저의 역할이다. 우리(개발자)의 역할은 코드를 사수하는 것이다.
  • 당신이 의사라고 해보자. 만약에 환자가 당신보고 수술을 하기 전에 손을 씻는 것은 시간 낭비이니 하지 말라고 해서 손을 안 씻을 것인가? 당신은 환자보다 질병과 감염의 위험성에 대해 더 잘 알기 때문에 환자가 당신의 고객임에도 불구하고 당신은 환자의 말을 무시하고 손을 씻을 것이다. 의사가 환자의 말을 곧이곧대로 따르는 것은 프로답지 못한 행동일 것이다. 이와 마찬가지로, 나쁜 코드를 만드는 것에 대한 위험성을 잘 알지 못하는 매니저의 말을 곧이곧대로 따르는 개발자는 프로답지 못하다고 할 수 있다.

원시적인 수수께끼 (The Primal Conundrum)

  • “데드라인을 맞춰야 한다는 압박감으로 인해 개발을 서두르다 보니 나쁜 코드를 짜게 되었다”라는 말은 모순이다. 나쁜 코드를 짜게 되는 그 즉시 생산성이 하락해서 개발 속도가 늦어지고, 그로 인해 데드라인을 못 맞추게 된다.
  • 데드라인을 맞추는 방법, 즉 빠르게 개발하는 방법은 항상 코드를 클린 하게 유지하는것 밖에 없다.

클린 코드의 기술? (The Art of Clean Code?)

  • “코드가 클린 하다”라는 말의 의미를 모른 채 클린 코드를 짜려고 하는 것은 좋지 않다.
  • 클린 코드를 짜는 것은 그림을 그리는 것과 상당히 비슷하다. 대부분은 잘 그린 그림과 못 그린 그림을 구분할 줄 안다. 하지만 이렇게 구분할 줄 안다고 해서 그림을 그릴 줄 안다는 뜻은 아니다. 이와 마찬가지로, 클린 코드와 나쁜 코드를 구분할 줄 안다고 해서 클린 코드를 짤 줄 안다는 뜻은 아니다.
  • 클린 코드를 짜기 위해선 힘들게 습득한 “깨끗함”에 대한 직감을 바탕으로 무수히 많은 작은 기술들을 규칙에 따라 적용해야 한다.
  • 코드에 대한 직감이 핵심이다. 직감을 타고난 사람도 있고, 직감을 얻기 위해 부단히 노력해야 하는 사람도 있다. 직감은 좋은 코드와 나쁜 코드를 구별할 수 있게 해줄 뿐만 아니라, 나쁜 코드를 좋은 코드로 변환하기 위한 원칙을 적용하는 전략을 알 수 있게 해준다.
  • 코드에 대한 직감이 없는 사람은 좋은 코드와 나쁜 코드를 구분할 줄은 알지만, 그것뿐이다. 반면 직감이 있는 사람은 나쁜 코드를 보고, 어떻게 좋은 코드로 변환해야 할지 여러 옵션들 중에 최적의 해답을 찾아 적용할 수 있다.

클린 코드란 무엇인가? (What Is Clean Code?)

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

나는 우아하고 효율적인 코드를 좋아한다. …(중략) 클린 코드는 한 가지 일을 잘 하는 코드이다.

  • 우아하다의 사전적 정의를 보면, “외모나 태도가 기분 좋게 품위 있고 세련된, 기분 좋게 독창적이고 간단한”이라고 한다. 비야네는 클린 코드를 읽기 즐거운 코드라고 여긴다.
  • 또한 효율성을 강조하고 있는데, 그도 그럴것이 비효율적인 코드는 우아하지 못하고 재미가 없다.