본문 바로가기
IT 서적/Clean Code

(클린 코드 - 로버트C. 마틴) 추천사 & 들어가면서, 1장 깨끗한 코드

by Crystal.k 2022. 1. 25.

👩‍💻새해를 맞아 다시 읽어보기로 마음먹은 '클린 코드' 완독하기 바라면서 기록해보고자 한다.

 

추천사

  • 사소한 곳에서 발휘하는 정직은 사소하지 않다.
    • 신은 세세함에 깃들어 있다.
  • 큰 실무에서 실력을 쌓고 신뢰를 얻으려는 전문가는 먼저 작은 실무부터 실력을 쌓고 신뢰를 얻어야한다.
  • 아주 사소한 것들이 전체의 매력을 깎아먹지 않게 하기위해 깨끗한 코드를 유지하는 것은 중요하다.
  • 5S
    • 정리, 조직, 정렬 Sort
    • 정돈, 단정함, 체계화, Seition
    • 청소, 정리, 광내기 Seiso
    • 청결, 표준화 Seiketsu
    • 생활화, 규율 Shutsuke
      • 작은 것에도 충실한 사람이 큰 것에도 충실하다.
      • 호미로 막을 일을 가래로 막지 마라
      • 일찍 일어나는 새가 벌레를 잡는다
      • 오늘 할 수 있는 일을 내일로 미루지 마라
  • 시 란 영원히 미완성이라 끝없이 재작업이 필요하며 포기할 때에만 끝난다고 말했다.
  • “코드가 설계다“ 와 “단순한 코드”
  • 코드에 정직하고, 코드 상태에 관하여 동료들에게 정직하고, 무엇보다도, 자기코드에 대해서 자신에게 정직하라

0. 들어가면서

  • 장인정신
    1. 지식 습득 : 원칙, 패턴, 기법, 경험
    2. 열심히 일하고 연습해 지식을 몸과 마음으로 체득하기
  • 이 책은 3가지로 이뤄짐
    1. 깨끗한 코드를 작성하는원칙
    2. 연구 사례 소개
      1. (익히는 과정, 포기하지말고 끝까지 읽어라)
    3. 결말, 사례연구를 만들면서 수집한 냄새와 휴리스틱을 열거

1. 깨끗한 코드

코드가 존재하리라

요구사항을 모호하게 줘도 우리 의도를 정확히 꿰뚫어 프로르갬을 완벽하게 실행하는 기계는 없다.

궁극적인 코드는 요구사항을 표현하는 언어라는 사실을 명심한다.

요구구사항에 더욱 가까운 언어를 만들 수도 있고, 요구사항에서 정형 구조를 뽑아내는 도구를 만들 수도 있다. 하지만 어느 순간에는 정밀한 표현이 필요하다. 그 필요성을 없앨 방법은 없다. 그러므로 코드도 항상 존재하리다.

나쁜 코드

우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 대충 짠 프로그램이 돌아간다는 사실에 안도감을 느끼며 그래도 안 돌아가는 프로그램보다 돌아가는 쓰레기가 좋다고 스스로를 위호한 경험이 있다. 다시 돌아와 나중에 정리하겠다고 다짐했었다. 물론 그때 그 시절 우리는 르블랑의 법칙을 몰랐다. 나중은 결코 오지 않는다.

나쁜 코드로 치르는 대가

코드가 하도 엉망이라 프로젝트 진도가 안나가는 경험도 있으리라. 매번 엃히고설킨 코드를 해독해서 엃히고설킨 코드를 더한다. 시간이 지나면서 쓰레기 더미는 점점 높아지고 싶어지고 커진다. 청소할 방법이 없다. 불가항력이다.

 

원대한 재설계의 꿈

재설계 팀 vs 기존 시스템 유지보수 팀

새 시스템이 기존 시스템기능을 100% 제공하지 않는 한 관리층은 기존 시스템을 대체하지 않을 것이다. (오래걸린다~10년~)

새 시스템이 기존 시스템을 따라잡을 즈음이면 초창기 팀원들은 모두 떠낫고 새로운 팀원들이 새 시스템을 설계하자고 나선다. (반복~)

시간을 들여 깨끗한 코드를 만드는 노력이 비용을 절감하는 방법일 뿐 아니라 전문가로서 살아남는 길이라는 사실을 인정해라

 

태도

좋은 코드를 사수하는 일은 바로 우리 프로그래머들의 책임이다.

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

 

원초적 난제

나쁜 코드가 업무속도를 낮추지만, 기한을 맞추려면 나쁜 코드를 양산할 수 밖에 없다고 느낀다. (빨리가려고 시간을 드리지 않는다.)

또한, 오히려 나쁜 코드를 양산하면 기한을 맞추지 못한다.

언제나 코드를 최대한 깨끗하게 유지하는 습관이다.

 

깨끗한 코드라는 예술?

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

깨끗한 코드를 작성하는 크포그래머는 빈 캔버스를 우아한 작품으로 바꿔가는 화가와 같다.

 

깨끗한 코드란?

  • 논리가 간단, 의존성을 최대한 줄이기, 한가지를 재대로 하기
  • 나쁜 코드는 나쁜 코드를 유혹한다.
    • 깨진 창문
      • 이미 창문이 깨진 건물은 창문이 더 깨져도 상관하지 않는다. 외벽에 그려진 낙서를 방치하고 차고에 쓰레기가 쌓여도 치우지 않는다. 일단 창문이 깨지고 나면 쇠퇴하는 과정이 시작된다.
  • 코드는 추측이 아니라 사실에 기반해야한다. 반드시 필요한 내용만 담아야 한다.
  • 깨끗한 코드란 다른 사람이 고치기 쉽다
  • 인간이 잃기 좋은 코드를 작성하라.
  • 중복 줄이기, 표현력 높이기, 초반부터 간단한 추상화 고려하기
  • 프로그램을 단순하게 보이도록 만드는 열쇠는 언어가 아니다. 언어를 단순하게 보이도록 만드는 열쇠는 프로그래머다.
  • 코드를 읽는 시간: 코드를 짜는 시간 = 10: 1을 넘는다. 따라서 읽기쉬운 코드는 중요하다.
  • 그러므로 급하다면, 서둘러 끝내려면, 쉽게 짜려면, 읽기 쉽게 만들면 된다.

보이스카우트 규칙

체크아웃할 때보다 좀더 깨끗한 코드를 체크인한다면 코드는 절대 나빠지지 않는다.

시간이 지날 수록 코드가 좋아지는 프로젝트!

 

결론

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

이 책을 읽는다고 뛰어난 프로그래머가 된다는 보장은 없다. 연습해, 연습!

 

 

👩‍💻 읽으면서...
레거시 코드들 속에서 새로운 기능을 넣기위해 고민하던 순간들이 떠올랐다. 나중으로 미뤄본 경험도 있고, 정말로 나중은 오지 않는다는 것도 느꼈었다. 나중이 왔다면 아마 그 코드에서 버그가 났었겟지.
 다시 만드는게 났겠다는 말도 참 많이 들었었다. 실제로 재설계 했던 모듈도 있었는데 마지막까지 사용되지 못하였다. 그 들은 퇴사했고, 그 코드 또한 서버에 존재하지만 관리되지 않는 코드가 되어버렸다.
다시 읽으니 공감되는 부분이 더 많아졌고 흥미로워졌다. 이김에 완독해봐야지!
반응형

'IT 서적 > Clean Code' 카테고리의 다른 글

(클린코드) 5장. 형식 맞추기  (2) 2022.02.11
(클린코드) 4장. 주석  (0) 2022.02.11
(클린코드) 3장. 함수  (0) 2022.02.11
(클린코드) 2장. 의미있는 이름  (0) 2022.01.26

댓글