클린코드 #1장. 깨끗한 코드

생성일:

3 분 소요

📌 TL;DR

  • 중복을 피하라
  • 한 기능만 수행하라
  • 제대로 표현하라
  • 작게 추상화하라
  • 테스트 케이스를 작성하고 모든 테스트를 통과하라
  • 오류 처리까지 세세한 사항을 꼼꼼히 처리하라

🌟 책에서 기억하고 싶은 내용을 써보세요.

추천사

  • 사소한 것은 중요하다.
  • 읽기 좋은 코드는 돌아가는 코드만큼이나 중요하다.
  • 소프트웨어는 80% 이상이 소위 “유지보수”다.
  • 품질은 하늘에서 뚝 떨어진 위대한 방법론이 아니라 사심 없이 기울이는 무수한 관심에서 얻어진다. 그 활동이 간단하다고 해서 단순하다는 뜻은 아니다. 쉽다는 의미는 더더욱 아니다.
  • 코드에 정직하고, 코드의 상태에 관하여 동료들에게 정직하고, 무엇보다도, 자기 코드에 대해서 자신에게 정직하라는 뜻이다.

1. 깨끗한 코드

  • 궁극적으로 코드는 요구사항을 표현하는 언어라는 사실을 명심한다. (p.3)
  • 나중은 결코 오지 않는다. (p.4)
  • 좋은 코드를 사수하는 일은 바로 우리 프로그래머들의 책임이다. (중략) 나쁜 코드의 위험을 이해하지 못하는 관리자 말을 그대로 따르는 행동은 전문가답지 못하다. (p.7)
  • 기한을 맞추는 유일한 방법은, 그러니까 빨리 가는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관이다. (p.7)
  • ‘코드 감각’이 있는 프로그래머는 나쁜 모듈을 보면 좋은 모듈로 개선할 방안을 떠올린다. ‘코드 감각’으로 최고 방안을 선택한 후 여기서 거기까지 이동하는 경로를 계획한다. (p.8)
  • 나쁜 코드는 너무 많은 일을 하려 애쓰다가 의도가 뒤섞이고 목적이 흐려진다. 깨끗한 코드는 한가지에 ‘집중’한다. (p.10)
  • 좋은 소설과 마찬가지로 깨끗한 코드는 해결할 문제의 긴장을 명확히 드러내야 한다. 긴장을 쌓으며 클라이맥스에 이르렀다가 명백한 해법을 제시하며 긴장과 문제를 풀어야 한다. 독자가 “아! 당연하지!”라며 무릎을 탁 치도록! (p.11)
  • 테스트 케이스가 없는 코드는 깨끗한 코드가 아니다. 아무리 코드가 우아해도, 아무리 가독성이 높아도, 테스트 케이스가 없으면 깨끗하지 않다. (p.12)
  • 깨끗한 코드는 주의 깊게 작성한 코드다. (p.12)
  • 같은 작업을 여러 차례 반복한다면 코드가 아이디어를 제대로 표현하지 못한다는 증거다. 나는 문제의 아이디어를 찾아내 좀 더 명확하게 표현하려 애쓴다. (p.13)
  • 중복과 표현력만 신경 써도 (내가 생각하는) 깨끗한 코드라는 목표에 성큼 다가선다. (중략) 중복 줄이기, 표현력 높이기, 초반부터 간단한 추상화 고려하기. 내게는 이 세 가지가 깨끗한 코드를 만드는 비결이다. (p.14)
    • 중복을 피하라, 한 기능만 수행하라. 제대로 표현하라. 작게 추상화하라. 이상이다.(p.14)
  • 깨끗한 코드는 읽으면서 놀랄 일이 없어야 한다고 워드는 말한다. 맞는 말이다. 코드를 독해하느라 머리를 쥐어짤 필요가 없어야 한다. 읽으면서 짐작한 대로 돌아가는 코드가 깨끗한 코드다. 명백하고 단순해 마음이 끌리는 코드가 깨끗한 코드다. (p.15)
  • Javadoc에서 @author 필드는 저자를 소개한다. 우리는 저자다. 저자에게는 독자가 있다. 그리고 저자에게는 독자와 잘 소통할 책임도 있다. (p.17)
  • 코드를 읽는 시간 대 코드를 짜는 시간 비율이 10 대 1을 훌쩍 넘는다. 새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다. 비율이 이렇게 높으므로 읽기 쉬운 코드가 매우 중요하다. (p.18)
  • 체크아웃할 때보다 좀 더 깨끗한 코드를 체크인한다면 코드는 절대 나빠지지 않는다. 한꺼번에 많은 시간과 노력을 투자해 코드를 정리할 필요가 없다. 변수 이름 하나를 개선하고, 조금 긴 함수 하나를 분할하고, 약간의 중복을 제거하고, 복잡한 if 문 하나를 정리하면 충분하다. (p.19)
  • 지속적인 개선이야말로 전문가 정신의 본질이 아니던가? (p.19)

💭 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 들어가면서 부분에 ‘이 책을 읽는 동안 마음 고생할 준비를 하기 바란다. 비행기 안에서 심심풀이로 읽어보는 “기분 좋은 책”이 아니다. 열심히, 아주 열심히 독파해야 하는 책이다. (중략) 책이 그저 “기분 좋은 책”으로 머물지 않기를 바란다. 손으로 몸으로 마음으로 익히기 바란다’는 글귀가 있었다. 사실 개발자의 필독서로서 읽은 책 리스트에 이름을 올리기 위해 읽는다는 마음도 없잖아 있었는데 아주 뼈를 맞았다. 맞다. 일 년동안 관념적으로, 무지성으로 코드를 짜던 습관을 하나하나 해체하며 바꿔나갈 것인데 이게 어찌 쉽게 이루어지겠는가. 마음 독하게 먹고, 세 살이 되었다는 마음으로 제대로 습관을 만들어보자.
  • 1장을 읽는 내내 한 줄 한 줄 공감이 가고, 뼈를 맞기도 하면서 흥건히 빠져들어 읽었다. 특히, 우리는 저자라는 문장을 읽고 나서 내가 쓴 코드에 대한 책임감을 가져야겠다는 마음이 들었다. 일정이 최우선으로 중요하니 일단은 돌아가게 만들고 하루 날 잡아서 처리하겠다고 마음먹고 그대로 방치해둔 코드들이 얼마나 많은가. 막상 지금은 쳐다도 보기 싫어서 파일을 열지 않는데, 저자도 보기 싫은 이 코드를 언젠가 펼쳐볼 다른 사람은 얼마나 짜증나고 욕을 할까. 이제부터라도 매일 퇴근하기 전에 마음에 걸리는 냄새나는 코드 딱 하나만 고치고 퇴근하는 습관을 가져볼까 한다.
  • 일단 이 독서 기록을 다듬는 것부터 시작해볼까

🧐 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • 르블랑의 법칙 - “Later equals Never.”

댓글남기기