티스토리 뷰

반응형

 

사람이라면 다들 한번씩 아.. 해야하는데.. 라고 생각만하고 실천은 하지 못한 경험이 있을것이다. (설마 나만..?)
나에게도 그런 마음의 짐이 몇가지가 있는데 그중 하나가 바로 '클린코드' 읽기이다. 마침 회사 일정도 나름 여유롭기도 하고 더 늦기전에 독파를 하고싶어서
이번기회에 간단히 리뷰(라고 쓰고 요약)를 해보려고 한다.

첫번째 장에서는 깨끗한 코드가 얼마나 중요한지에 대해 설명해준다. 물론 코드가 깨끗해야 한다는것은 누구나 알고있지만 필자의 경우 한번씩 '아.. 이 정도는 괜찮겠지?'
하는 자기합리화에 빠져 코드르 오염시키는 경우가 있기에 상당히 찔리는 부분이었다. 앞으로 이 책을 읽으면서 여러모로 반성을 하게 될거같은 느낌이 들었다.


코드가 존재하리라

최근 AI가 코드를 대신 짜주는 세상이 왔다. github의 Code Pilot 과 같이 간단한 명령으로 가벼운 모델을 만들어주는 기술은 이미 세상에 나왔다.
하지만 그렇다고 나는 진짜 개발자를 완벽히 대체할 AI가 나온다고는 생각하지 않는다. 이 책에도 비슷한 생각을 가지고 문단이 시작된다.
모든 프로그램에는 요구사항이 있고 그 요구사항을 표현하는것이 코드인데 시키는대로 돌아가는것이 아닌 원하는대로 돌아가는 기계는 절대 있을 수 없고
인간의 정밀한 표현을 기계가 따라할수는 없다는 것이다.
물론 세상은 빠르게 발전하고있고 과거에는 사람을 바둑으로 이기는 유명한 AI 알파고가 나올거라고 생각했던 사람은 소수였을것이다.
하지만 19 x 19 의 작은 판 위에서 벌어지는 명확한 규칙을 가진 게임과 고객의 감성과 니즈, 기업의 요구 가치 등을 다루는 응용 프로그래밍은
완전히 규모가 다른 문제이기 때문에 만에 하나 그런일이 생긴다고 하면 개발자들은 모두
실직해야겠지만 나는 내가 은퇴할때까지는 그럴일이 없을거라고 생각한다.

나쁜코드

본 책에서는 한 솔루션을 제공하는 회사가 망한 히스토리를 에시로 들며 시작한다. 유망했던 한 회사는 나쁜 코드로 인해 오류와 낮은생산성 등 고초를 겪다가 망했다고 말이다.
또한 생산성과 시간 그래프를 보여주는데 시간이 지날수록 가파르게 줄어들며 0에 수렴하는 그래프이다.
지금은 나도 회사에서 수시로 리팩토링을 진행하고 코드를 관리하고 있지만 예전에 첫 취직했을때는 나에게는 사수도 없었고
솔직히 새로운 툴과 언어에 익숙해지고 눈앞의 새 기능을 구현하는데에만 급급했다.
약 1년정도를 다니다가 퇴사를 했는데 그 떄 당시에는 퇴사전에 나름대로 Bloc를 상위버전으로 마이그레이션 하고 코드도 정리를 했다고 생각했지만
지금 생각해보면 개선할 점이 훨씬 더 많았을텐데 아쉬움이 남긴한다..
나의 길지 않은 개발 경험으로 비추어 봐도 이 책에서 말하는 현실과 타협하고 나쁜코드를 남겨놓는 부분에 대해 공감이 많이 간다.
그렇다는 얘기는 앞으로도 비슷한 상황이 많이 있을테고 그때마다 조금씩 양보하다가는 생산성 저하에 이르게 된다는 의미가 될텐데
그러지 않으려면 나도 항상 깔끔한 코드를 유지하는 습관을 들여야겠다.(사실 지금도 그러려고 하지만 나중에 보면 더 나은 방법이 있지 않았을까 하는생각이 자주 든다.)

태도

위와 같이 나쁜 코드를 통해 그 업보를 정통으로 맞게되면 그 책임은 사실 개발자에게 있다고 한다. 직장 상사가 일정 고려없이 현실성없는 기한을 맞추라며 지시를 해도
전문가로서 좋은코드를 사수하지 못했기 때문이라고 하는데 솔직히 이게 말처럼 쉽지는 않은거같다. 개발을 하다보면 일정에 맞춰서 끝내는게 정말 어렵다. 업무를 주는 사람은
빠른 개발 및 출시를 원하고 개발자는 많은 사이트이펙을 고려하며 기존의 코드를 깔끔하게 유지하기를 원해 기간을 더 가져가길 원한다. 이러한 조율에 실패해
나쁜코드를 가져가게 되는것을 잘못이라고 한다면 물론 잘못이라고 할 수는 있겠으나 개인적으로 이런건 좋은 관리자를 만났는가에 대한 부분으로 이어져야 하는 논쟁같아
무턱대고 동의 하기는 어려운것 같다.

깨끗한 코드란?

바야네 스트롭스트룹, 그래디 부치, 빅 데이브 토마스 등 나는 살면서 처음들어보지만 많은사람들이 알고있는 유명한 인사들의 인터뷰 내용이 있다.
그 내용들을 요약해서 적어보자면 아래와 같다.

  1. 우아하고 효율적인 코드가 좋다. 논리가 간단해야 버그가 숨어들지 못한다. 꺠끗한 코드는 한가지를 제대로 한다.
  2. 깨끗한 코드는 잘 쓴 문장처럼 읽히며, 설계자의 의도를 숨기지 않는다.
  3. 특정 목적을 달성하는 방법은 하나만 제공한다.
  4. 깨끗한 코드는 누군가 주의 깊게 짯다는 느낌이 들고 고치려 하다보면 제자리이다.
  5. 중복을 피해라, 한 기능만 수행하라, 제대로 표현하라, 작게 추상화 하라.

이론상 간단하다. 하나의 기능을 하나의 함수가 수행하게 하며, 그 내용은 중복되지 말아야하고 네이밍을 잘 표현해야 한다.
코드를 읽으면서 짐작했던 곳에서 짐작했던 기능을 정화히 수행하면 되는것이다.

우리들(저자)의 생각

이 책에서는 깨끗한 변수 이름, 깨끗한 함수, 깨끗한 클래스를 만드는 방법을 소개한다. 이 책의 가이드를 따르다 보면 적어도 자신의 주관을 가진 수준 높은 코드를
작성할 수 있다고 한다. 물론 이것들이 절대적으로 옳은게 아니지만 내가 코드의 저자로서 내 코드를 읽는 독자들에게 부끄럽지 않게할 정도의 수준은 만들 수 있다고 생각한다.

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함