클린 코드 1장 깨끗한 코드

inhalin·2022년 2월 19일
0

노개북 클린 코드

목록 보기
2/12

노개북 2기 2일차

  • 추천사(pp.xxii~xxix)
  • 1장 깨끗한 코드(pp.2~20)

요약 및 느낀 점

p.2
기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 바로 이것이 프로그래밍이다. 이렇게 명시한 결과가 바로 코드다.

p.3
창의력과 직관을 보유한 우리 인간조차도 고객의 막연한 감정만 갖고는 성공적인 시스템을 구현하지 못한다.

요구사항을 명확하게 파악해야 원하는 대로 동작하는 프로그래밍을 짤 수 있다.

항상 코드를 짜기 전에

  • 내가 해결해야 하는 이슈의 해결 요구사항이 무엇인지
  • 어디부터 어디까지가 문제인지
  • 어떻게 해결해야 하는지

를 명확하게 파악하고 이에 대한 문제 해결 방법을 순서대로 적어보고 코딩을 시작하자.

p.4
프로그래머라면 누구나 당연히 나쁜 코드로 고생한 경험이 있다. 그렇다면 묻겠다. 어째서 나쁜 코드를 짰는가? … 우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. … 나중은 결코 오지 않는다.

회사에서 만 1년을 채우지 않은 그 짧은 근무 기간에마저도 쓰레기 코드를 짰다. 몇달 뒤에 다른 이슈로 내가 짠 코드를 다시 봐야했는데 왜 이렇게 써놨지? 소리가 절로 나왔다. 고작 몇달 전에 짠 코드도 그런데 수년이 쌓이면 어떨지 생각도 하기 싫다.

이미 회사 코드에 그렇게 쌓인 레거시가 아주 많다. 거기에 한뭉치 보태지 말고 한움큼 덜어내보자.

p.8
깨끗한 코드가 무엇인지 모르면 깨끗한 코드를 만들려고 애써봤자 소용이 없다. … 깨끗한 코드와 나쁜 코드를 구분할 줄 안다고 깨끗한 코드를 작성할 줄 안다는 뜻은 아니다.

그러려면 좋은 코드를 계속해서 쓸 수 있어야 한다. 근데 좋은 코드가 뭘까? 그 기준은 어떻게 잡을 수 있을까? 나한테는 뭐가 깨끗한 코드인지, 뭐가 그렇지 않은지 구분하는 명확한 기준이 아직 없다. 이 책을 읽는 이유와 기대하는 점이 바로 이 부분을 명확히 하는 것이다.

  • 첫 번째, 좋은 코드, 깨끗한 코드가 뭔지 알 것.
  • 두 번째, 내가 그런 깨끗한 코드를 작성할 수 있게 되는 것.

책을 다 읽을 때 쯤이면 적어도 첫 번째에 대한 부분은 알게 될 것이다. 두 번째는 책의 내용을 실무에서 적용하려고 계속해서 시도하고 노력해야 하는 부분이라고 본다.

p.9
나쁜 코드는 나쁜 코드를 ‘유혹’한다!

실제로 나쁜 코드를 보면 한숨부터 나온다. 근데 또 이걸 고치려니 어디서부터 손대야 할 지 몰라서 결국 기존에 있는 나쁜 코드를 이렇게 저렇게 조금씩 수정하면서 쓰게 된다. 그렇게 쓰레기 코드를 깨끗한 코드로 수정할 기회를 놓치고 결국 계속 그렇게 쓰레기가 쌓이게 되는 것 같다.

p.16
우리가 가르치는 기법을 따른다면 깨끗하고 수준 높은 코드를 작성하리라 감히 장담한다. … 우리 생각이 무조건 옳다고 주장할 의도는 없[지만] … 이 책은 우리가 오랫동안 고민하고 숙고한 교훈과 기법을 권고한다. 수십 년에 걸친 경험과 반복적인 시행착오로 습득한 교훈과 기법이다.

9-15쪽에는 저자가 다른 프로그래머들에게 받은 깨끗한 코드에 대한 의견이 쓰여있다. 공통적으로 나오는 이야기를 정리해보자면,

  • 읽기 쉽고 보기 좋은 코드
  • 하나의 목적을 수행
  • 효율적이고 명확하게 문제 해결
  • 추상화, 단순화

등이 있다. 그리고 저자가 생각하는 깨끗한 코드란 무엇인지에 대해서도 이야기한다. 그러면서 이런 기법은 절대적인 것이 아니라는 말도 덧붙인다.

무술의 종파에 비유해서 말하는데 공감이 갔다. 그레이시 가문에서 시작된 브라질리언 주짓수에서 사용하는 여러가지 공격법, 방어법이 있고 허점도 있다. 그렇다고 내가 처음에 배운 기술이 틀린 게 아니다. 이런 허점을 보완하는 새로운 기술들이 계속 나오고 있다. 이런 기술들을 전부 알 필요도 없고 알 수도 없다.

기본기를 잘 익히고 심화기술을 배우면서 본인에게 맞는 스타일이 생긴다. 자신이 제일 잘 쓰는 주특기가 생기면 그에 대한 약점도 본인이 제일 잘 알게 된다. 그러면 그 약점을 보완할 방법을 또 찾으면 되는거다.

주짓수 이야기가 나와서 말이 길어졌는데, 프로그래밍도 마찬가지라고 저자가 말한다. 프로그래밍 초보인 나는 오브젝트 진영이 말하는 깨끗한 코드를 기본기로 배우고, 부족한 부분이 있다고 느낄 때 그걸 보완해줄 수 있는 다른 방법들을 찾아서 성장하면 된다. 깨끗한 코드에서 가장 중점에 두는 부분들이 조금씩 다를 수는 있겠지만 내가 지금 배우는게 틀린 게 아니다.

p.19
한꺼번에 많은 시간과 노력을 투자해 코드를 정리할 필요가 없다. … 지속적인 개선이야말로 전문가 정신의 본질이 아니던가?

조급해하지 말자. 기본을 잡자. 매일 조금씩 성장하면 그걸로 충분하다. 대신 퇴보하지 말자. 전문가의 마음으로 일하자.

더 공부할 내용

소프트웨어 개발의 지혜, 로버트 C. 마틴

클린 코드가 위 책의 프리퀄이라고 하니까 지금 책 다 읽으면 이어서 읽어봐야겠다.

0개의 댓글