본문 바로가기
프로젝트/클린코드 노마드 북클럽

북클럽 2일차. 1장 깨끗한 코드

by 1005ptr 2024. 6. 23.
반응형

0장 추천사

1. 알아보기

  • 로버트 마틴이 조잡하기에 피해야 한다고 충고한 기차 충돌 형태의 코드는 요즘 들어 읽기 쉬운 코드를 지향하는 fluent interface에 등장하고 있다.

핵심은 팀이나 공동체에서 서로 동의하는 합리적인 원칙을 세우기 위한 소통에 있다. Clean Code는 이런 소통을 위한 기초 지식을 제공하고 생각할 거리를 던져주는 책

처음부터 유지보수하기 좋은 코드를 만들자.

TPM(Total Productive Management)

  1. 정리: 명명법. 무엇이 어디에 있는지 알아야 한다.
  2. 정돈: 예상하는 위치에 있어야 한다.
  3. 청소: 안쓰는건 지워라.
  4. 청결: 일관적인 구현 스타일과 기법. 표준화
  5. 생활화: 관례를 따라라. 자주 돌아봐라

품질은 하늘에서 뚝 떨어진 위대한 방법론이 아니라 사심 없이 기울이는 무수한 관심에서 얻어진다.

넓은 범위를 사고하고, 특히 응용 분야와 소프트웨어 사용성을 고려해 아키텍처를 결정해야 한다.

코드가 설계다. 단순한 코드

  • 인터페이스가 프로그램이라는 사실, 인터페이스 구조가 프로그램 구조를 표현해야 한다도 중요
  • 설계가 코드 속에 존재한다.
  • 사소한 것에 집중할 뿐 아니라 사소한 것에 정직해야 한다.
  • 리처드 가브리엘은 "추상화 논평"이라는 수필에서 추상화는 악이라고 충고한다. 코드는 반악이며, 깨끗한 코드는 성스럽기까지 하다.

시간을 들여 사례 연구를 검토하고, 모든 결정과 단계를 이해하고, 우리 입장에 서서 우리가 생각한 방식을 이해하려 애쓴다면, 이 책에서 제시하는 원칙과 패턴과 실기와 휴리스틱을 자신의 지식으로 만들 수 있으리라 생각한다. 이 책이 그저 "기분 좋은 책"으로 머물지 않기를 바란다. 손으로 몸으로 마음으로 익히기 바란다.

 

상황과 그에 대한 결정을 이해하자. 맥락을 이해하고 해법을 이해하자. 결정에 대해 고민하자.

 

1장 깨끗한 코드

잘못은 전적으로 우리 프로그래머에게 있답니다.
우리가 전문가답지 못했기 때문입니다.

관리자가 마케팅은 우리에게 정보를 구한다.
정보를 구하지 않더라도 우리가 적극적으로 정보를 제공해야 마땅하다.
사용자는 요구사항을 내놓으며 우리에게 현실성을 자문한다.
프로젝트 관리자는 일정을 잡으며 우리에게 도움을 청한다.
우리는 프로젝트를 계획하는 과정에 깊숙히 관여한다.

대다수 관리자는 진실을 원한다.
일정에 쫓기더라도 대다수 관리자는 좋은 코드를 원한다.
그들이 일정과 요구사항을 강력하게 밀어붙이는 이유는 그것이 그들의 책임이기 때문이다.
좋은 코드를 사수하는 일은 바로 우리 프로그래머들의 책임이다.
나쁜 코드의 위험을 이해하지 못하는 관리자 말을 그대로 따르는 행동은 전문가답지 못하다.

나쁜코드는 결국 속도를 느리게 만든다.

깨끗한 코드란?

  • 비야네 스트롭스트룹
    • 깨진 창문을 조심해라. 나쁜 코드는 나쁜 코드를 유혹한다.
    • 하나만 잘하자.
    • 의존성을 줄이고 간단한 논리를 유지하자.
  • 그래디 부치
    • 단순하고 직접적이다.
    • 의도를 숨기지 않는다.
    • 코드는 추측이 아니라 사실에 기반해야 한다.
  • 데이브 토마스
    • 목적 하나에 방법 하나
    • API는 최소화하자.
    • 다른 사람이 고치기 쉬운 코드
    • 코드는 작을수록 좋다.
    • 코드는 문학적이어야 한다.
      • Donald Knuth - Literate Programming(문학적 프로그래밍)
  • 마이클 페더스
    • 코드를 주의깊게 짜는 법
    • 고치려고 살펴봐도 딱히 손 댈 곳이 없는 코드
  • 론 제프리스
    • 중복을 줄이자.
  • 워드 커닝햄
    • 짐작했던대로 동작하는가

새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다.

반응형

댓글