Clean Code 1.

Buddy·2023년 8월 20일
0

책을 좀 읽어야겠다.

요즘 책을 너무 읽지 않은 것 같다. 회사에서는 일하고 집에서는 진행하고 있는 프로젝트가 있어 책 읽을 시간이 많이 없었다. (는 핑계를 항상 대고있다.) 출/퇴근길에 Effective Java를 ebook으로 조금씩 읽기도 했는데 전철에서 서서 작은 화면으로 읽으며 이해할 수 있는 만큼 쉬운 책이 아니라서.. 책장을 넘기지 못한지 꽤 된 것 같다. 그러던 와중에 요즘 성장의 필요를 느꼈다.

이제 슬슬 회사에 적응하고 코드를 보고 작성하면서 문제들을 많이 느끼는데 그 문제를 어떻게 해결하고 무엇이 문제인지 구체적으로 알기가 어렵더라.

또 최근에 프로젝트를 하면서 같은 백엔드 파트 팀원에게,

~~보다 ~~로 하는 방법이 더 좋다고 느껴지는데 이게 일반적인 방법인지, 항상 좋은 방법인지는 잘 모르겠어요. 단순 의견이니 참고만 해주세요!

와 같은 말을 많이 했는데, 이제는 의견을 내는 것도 좋지만 왜 좋은 방법인지 설명할 수 있는 단계가 되어야 할 것 같았다.

그래서 책을 좀 읽어야겠다. 라는 결론을 내리고 여러 고민 끝에 Clean Code를 먼저 읽기로 했다.

1장 깨끗한 코드

왜 필요한가

1장에 들어오면서 곧바로 요즘 핫한 주제에 대해서도 이야기한다. 코드를 자동으로 생성하는 시대가 다가오며 요구 사항만 있으면 누구나 코드를 작성할 수 있어 프로그래머가 필요 없어질 수 있다. 라는 주장에 대해 그 요구사항을 적는 것이 프로그래머이며 상세한 요구사항을 적기 위해 존재하는 것이 코드다. 라고 말한다.

평소에 내가 하던 생각과 비슷해서 재밌었다. 요즘 생성형 AI가 만능인 것 처럼 쉽게 생각하는 경향이 있는데 질 좋은 답을 얻기 위해서는 상세한 요구사항으로 요청하는 것이 필요하다. 컴퓨터가 이 요구사항을 이해하고 답을 내뱉는 것인데, 이 요구사항을 상세하게 쓴 것이 코드고 컴퓨터가 가장 잘 이해할 수 있는 언어가 코드니까.. 프로그래머가 없어진다는 얘기는 다소 호들갑처럼 느껴지기도 한다. 잘 작성된 코드를 내뱉는다고 해도 코드가 맞는지 해석하고 검증하고 정리하는 과정이 필요하다. 이 일도 프로그래머의 일이다.

프로그래머는 사라지지 않고 코드는 항상 존재한다. 그래서 Clean Code는 중요하다.

나쁜 코드

책의 내용에서 나쁜 코드와 나쁜 코드로 치르는 대가에 대해서 이야기한다.

2-3년 넘게 프로그램을 짰다면 남들이 저질러놓은 쓰레기 코드로 고생한 경험이 있으리라. 코드가 하도 엉망이라 프로젝트 진도가 안 나가는 경험도 있으리라. 나쁜 코드는 개발 속도를 크게 떨어뜨린다. 프로젝트 초반에는 번개처럼 나가다가 1-2년만에 굼벵이처럼 기어가는 팀도 많다.
(중략)
나쁜 코드가 쌓일 수록 팀 생산성을 떨어진다. 그러다가 마침내 0에 근접한다.

나는 이 내용에 대해서 너무나 공감됐다. 나의 과거 프로젝트에서, 학교에서, 회사에서 남들이 저질러놓은 쓰레기 코드로 고생한 경험이 있다. 이는 생산성을 떨어뜨린다. 잘 정리된 코드라면 금방 이해하고 유지보수나 기능 개발을 이어갈 수 있겠지만, 그렇지 않은 코드라면 하나의 기능을 분석하고 이해하는데도 수일이 걸리기도 한다. 내가 진행했던 규모가 작은 프로젝트라면 마음대로 수정하거나 프로젝트 자체를 새로 개발하는 것이 가능한데 그 외 조직에서 개발하는 경우에는 기능을 유지해야 하기에 수정하거나 프로젝트를 새로 시작하는 것이 굉장히 어렵다. 비용과 관련된 문제로 절대 불가능한 경우도 있고.

무튼 나쁜 코드로 고생한 경험도 있고 나쁜 코드가 초래할 수 있는 단점도 알고 있으니까.. 나쁜 코드를 작성하지 않기 위해서 노력해야 한다. 좋은 코드를 습관처럼 작성할 수 있어야 한다.

좋은 코드

그럼 좋은 코드는 뭘까.. 항상 궁금했다.

이 책은 깨끗한 코드를 구현하는 행위는 그림을 그리는 것과 비슷하다고 이야기한다.

그림을 보면 대부분의 사람은 잘 그려졌는지 엉망으로 그려졌는지 안다. 그렇지만 잘 그린 그림을 구분하는 능력이 그림을 잘 그리는 능력은 아니다. 다시 말해, 깨끗한 코드와 나쁜 코드를 구분할 줄 안다고 깨끗한 코드를 작성할 줄 안다는 뜻은 아니다.

클린 코드를 배워야 하는 근거를 비유를 통해서 잘 말해준 것 같다.

여담으로..

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

라는 비유가 너무 마음에 들었다. 프로그래밍을 대해 이런 감성적이고 멋진 말로 풀어낼 때 정신을 차릴 수가 없다. 너무 멋진걸.. 이 책이 더 마음에 들기 시작했다.

살짝 딴 이야기를 했는데,,,

저자는 깨끗한 코드란 무엇일까에 대해 여러 프로그래머들에게 질문을 한다. 답을 좀 정리해보면,

  1. 우아하고 효율적인 코드
  2. 설계자의 의도가 숨겨지지 않은 단순하고 직접적인..
  3. 특정 목적을 달성하는 방법이 하나인, 명확하며 최소의 특성을 갖는..
  4. 고치려고 살펴봐도 딱히 손 댈 곳이 없는..
  5. 모든 테스트를 통과, 중복이 없음, 클래스, 메서드, 함수 등을 최대한 줄인..
  6. 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행..

(두루뭉술하게 정리했는데 책 내용을 너무 상세하게 쓰면 안 될 것 같아서 그랬다. 내용이 참 좋으니 직접 보는걸 추천!)

프로그래머가 많은 만큼 깨끗한 코드의 정의도 많을 것이다. 여러 표현 방법과 기준이 있지만 결국 비슷한 목표를 가지게 되는 것 같다.

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

위는 보이스카우트 규칙이라는데 개발자에게도 적용되는 말인 것 같다.

코드는 처음 작성할 때 보다 더 깨끗하게 해놓고 커밋해라.

로 바꿔서 마음에 새겨야겠다. 끝!

+ 내용 정리도 아니고 그저 후기도 아닌 무엇인가 알 수 없는 글이 된 것 같은데.. 원래 대충 글 쓰기로 했으니까 괜찮을 것 같기도 하면서 클린 코드를 읽으며 적는 내용이 더티해도 되는건가 싶기도 하고.. 그래도 지금 개발이 급해서 글은 간단하게 쓰고.. 진짜 끝..!!

profile
가볍게 쓰는 내용들이라 주관과 틀린 내용이 많습니다. 비판적인 시각으로 봐주시고 지적은 환영 :)

0개의 댓글