[클린코드] 1장 깨끗한 코드

OhJuYeong·2025년 3월 18일

Clean Code

목록 보기
1/15
post-thumbnail

클린코드에 대해 스터디 하기 시작했다!
그래서 그 내용을 한번 정리해보려고 한다.

사실 1장은 가벼운 이론 느낌이여서 간단하게만 정리해보려고 한다.

📌 코드가 존재하리라

  • 코드의 종말이 코앞에 닥쳤다고 하는 말을 헛소리다!

    • 코드는 요구사항을 상세히 표현하는 수단이니까 사라질 가망이 전혀 없다
    • 고도로 추상화된언어나 특정 응용 분야 언어로 기술하는 명세 역시 코드니까 자동으로 생성하려고 해도 코드 일 것이다.

    -> 궁긍적으로 코드는 요구사항을 표한하는 언어이다.

📌 나쁜 코드

  • 좋은 코드는 중요하다
    - 킬러 앱 하나를 구현하는 회사가 있는데 출시에 바빠 코드를 마구 짰다가 엉ㅁ아이 되어 회사가 망한 사례가 있다. -다시 돌아와 나중에 정리하겠다고 다짐해도 나중은 결코 오지 않는다.

📌 나쁜 코드로 치르는 대가

  • 나쁜 코드가 쌓일수록 팀 생산성은 떨어진다. 그러다가 마침내 0에 근접한다. -> 새로운 인력 추가 -> 새로운 인력은 시스템을 배워야하지만 나쁜 코드로 인해 이해하지 못한다 -> 나쁜 코드 양상

🍀 원대한 재설계의 꿈

  • 혐오스러운 코드로는 더 이상 일을 못하겠다며 재설계 요구 -> 새로운 타이커 팀 구성
    -> 원래 팀과 새로운 팀의 경주 시작 -> 기존 것을 따라잡고 설계를 위해 경주는 아주 오랫동안 이어짐 -> 나쁜 코드 양상 -> 기존 시스템을 따라잡을 즈음 초장기 타이거 팀원들은 팀을 모두 떠났고 새로운 팀원들은 새 시스템 설계 요구

🍀 태도

  • 나쁜 코드 일수록 한줄만 고치면 되리라 예상을 했다가 모듈을 수백 개 건드린 경험이 생긴다.
  • 좋은 코드가 나쁜 코드로 전략 되는 순간
    - 요구 사항이 변했다고 불평
    • 일정이 촉박하다고 한탄
    • 하지만 잘못은 전적으로 프로그래머에게 있다.
    • 좋은 코드를 사수하는 일은 바로 프로그래머들의 책임

🍀 원초적 난제

  • 나쁜 코드를 양산하면 기한을 맞추지 못함
    - 기한을 맞추는 유일한 방법은 언제나 코드를 최대한 깨끗하게 유지하는 습관

🍀 깨끗한 코드라는 예술?

  • 깨끗한 코드를 어떻게 작성할까?
    - 그림을 그리는 행위와 비슷
    • 깨끗한 코드를 작성하려면 청결이라는 히벽ㅂ게 습득한 감각을 활용해 자잘한 기법들을 적용하는 절제와 규율이 필요
    • 열쇠는 코드 감각

📌 깨끗한 코드란?

비야네 스트롭스트룹

  • 우아하고 효율적인 코드를 좋아한다.
  • 논리가 간단해야 버그가 숨어들지 못한다.
  • 의존성을 최대한 줄여야 유지보수가 쉬워진다.
  • 오류는 명백한 전략에 의거해 철저히 처리한다.
  • 성능을 최적으로 유지해야 사람들이 원칙 없는 최적화로 코드를 망치려는 유혹에 빠지지 않는다.
  • 깨끗한 코드는 한가지를 제대로 한다.

🍀 그래디 부치

  • 깨끗한 코드는 단순하고 직접적이다.
  • 깨끗한 코드는 잘쓴 문장처럼 읽힌다.
  • 깨끗한 코드는 결코 설계자의 의도를 숨기지 않는다.
    - 오히려 명쾌한 추상화와 단순한 제어문으로 가득하다.

📌 큰 데이브 토마스

  • 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다.
  • 단위 테스트 케이스와 인수 테스트 케이스가 존재한다.
  • 깨끗한 코드에는 의미있는 이름이 붙는다.
  • 특정 목적에 달성하는 방법은 하나만 제공한다
  • 의존성은 최소이며 각 의존성을 명확히 정의한다.
  • API는 명확하며 최소로 줄였다.
  • 언어에 따라 필요한 모든 정보를 코드만으로 명확히 표현할 수 없기에 코드는 문학적으로 표현해야 마땅하다.

🍀 마이클 페더스

  • 언제나 누군가 주의 깊게 짰다는 느낌을 준다.
  • 고치려고 봐도 딱히 손 댈 곳이 없다.

🍀 론 제프리스

  • 모든 테스트를 통과한다.
  • 중복이 없다.
  • 시스테 ㅁ내 모든 설계 아이디어를 표현한다.
  • 클래스, 메서드, 함수 등을 최대한 줄인다.

🍀 워닝 커닝햄

  • 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드이다.
  • 코드가 그 문제를 풀기 위한 언어처럼 보인다면 아름다운 코드이다.

📌 우리는 저자다

우리는 저자다. 저자에게는 독자가 있다.
저자에게 독자와 잘 소통할 책임도 있다.

  • 코드를 짤 때는 자신이 저자라는 사실을 여러분이 노력을 보고 판단을 내릴 독자가 있다는 사실을 기억해라

📌 보이스카우트 규칙

잘짠 코드가 전부는 아니다.
시간이 지나도 언제나 깨끗하게 유지해야한다.

  • 한꺼번에 많은 시간과 노력을 투자해 코드를 정리할 필요가 없다.
  • 변수 이름 하나를 개선하고, 조금 긴 함수 하나를 분할하고, 약간의 중복을 제거하고, 복잡한 if 문 하나를 정리하면 충분하다.

📌 결론

  • 예술에 대한 책을 읽는 다고 예술가가 된다는 보장은 없다.
  • 책은 단지 다른 예술가가 사용하는 도구와 기법, 그리고 생각하는 방식을 소개할 분이다.

-> 세세한 정보들을 제공하고 나머지는 여러분에게 달렸다!!

profile
기록하는 개발자

0개의 댓글