클린 코드

클린 코드

로버트 C. 마틴의 고전을 장별로 요약한 실천 노트.

로버트 C. 마틴의 『클린 코드』를 읽으며 장(章) 단위로 요약과 실천 포인트를 정리했습니다.

Contents

  1. 01
    1장 깨끗한 코드깨끗한 코드가 왜 속도를 늦추지 않는지, 켄트 벡의 단순한 규칙과 보이스카우트 규칙으로 어떻게 매일의 실천이 되는지 다룬다. 나쁜 코드가 쌓는 부채와 그 부채를 조금씩 갚는 태도.
  2. 02
    2장 의미있는 이름이름은 작은 설계다. 의도를 드러내는 이름, 그릇된 단서 피하기, 검색·발음 가능성, 인코딩·헝가리안 표기 배격, 클래스는 명사·메서드는 동사까지 — 이름 규칙의 지도를 예시로 정리한다.
  3. 03
    3장 함수함수를 다루는 규칙 모음. 작게, 한 가지만, 한 추상화 수준, 서술적 이름, 인수 줄이기, 플래그 인수 제거, 명령·조회 분리, 오류 처리 분리, 반복 제거. testableHtml을 SetupTeardownIncluder로 다듬는 스텝 플레이어 포함.
  4. 04
    4장 주석주석은 실패를 메우는 도구다. 코드로 표현하지 못한 것을 주석이 대신 변명한다. 나쁜 주석(중복·오해·주석 처리된 코드)과 좋은 주석(의도·경고·법적 고지·TODO)을 가르고, 주석을 함수·이름으로 대체하는 판단 흐름을 정리한다.
  5. 05
    5장 형식 맞추기코드 형식은 의사소통이다. 신문 기사처럼 위에서 아래로 읽히는 세로 배치, 개념을 나누는 빈 줄, 연관성을 드러내는 밀집도, 그리고 팀 규칙을 기계에 맡기는 포매터까지 — 가독성을 만드는 형식의 규율을 다룬다.
  6. 06
    6장 객체와 자료구조객체는 자료를 숨기고 동작을 드러내며, 자료 구조는 자료를 드러내고 동작이 없다. 자료 추상화, 자료/객체 비대칭성(절차적 도형 vs 다형 도형), 디미터 법칙과 기차 충돌을 통해 '변경의 방향'에 맞는 구조를 고르는 법을 다룬다.
  7. 07
    7장 오류처리오류 처리는 정상 흐름을 흐리지 않으면서 실패를 놓치지 않는 일이다. 오류 코드 대신 예외, 외부 예외를 감싸는 경계, null 반환/전달의 위험, 그리고 특수 사례 객체로 분기를 없애는 진화 과정을 다룬다.
  8. 08
    8장 경계외부 코드와 우리 코드가 맞닿는 경계를 다룬다. 범용 인터페이스(Map 등)를 좁혀 감싸기, 학습 테스트로 사용법 검증하기, 아직 없는 코드를 위한 인터페이스 정의와 어댑터(ACL)로 변경의 충격을 경계에 가두는 법을 설명한다.
  9. 09
    9장 유닛 테스트TDD 원칙과 자동화된 유닛 테스트 작성 방법을 다룬다. TDD 세 가지 법칙, BUILD-OPERATE-CHECK, 도메인 특화 테스트 언어, 하나의 테스트에 하나의 개념, F.I.R.S.T 원칙을 코드와 함께 설명한다.
  10. 10
    10장 클래스클래스 설계의 원칙을 다룬다. 클래스 구성 순서, 작은 클래스와 단일 책임 원칙(SRP), 응집도, 변경하기 쉬운 클래스(DIP)를 God class 분리 예시와 함께 설명한다.
  11. 11
    11장 시스템시스템 수준의 모듈화와 책임 분리를 다룬다. 제작과 사용의 분리, main 분리, 팩토리, 의존성 주입(DI/IoC)을 코드 예시와 함께 설명한다.
  12. 12
    12장 창발성켄트 벡의 단순한 설계 네 가지 규칙을 다룬다. 모든 테스트 실행, 중복 제거, 의도 표현, 클래스와 메서드 수 최소화가 우선순위와 함께 어떻게 좋은 설계를 창발시키는지 코드로 설명한다.
  13. 13
    13장 동시성동시성이 필요한 이유와 그 어려움을 다룬다. 동시성 방어 원칙, 스레드에 안전한 코드 작성, 다중 스레드 테스트 방법을 설명한다.
  14. 14
    14장 점진적인 개선Args 유틸리티 사례 연구를 다룬다. 돌아가는 초안에서 시작해 테스트를 유지한 채 점진적으로 리팩터링하는 전 과정을 보여준다.
  15. 15
    15장 JUnit 들여다보기JUnit의 ComparisonCompactor 모듈을 사례로, 이미 좋은 코드를 더 좋게 다듬는 보이스카우트 규칙의 실전을 보여준다.
  16. 16
    16장 SerialDate 리팩터링JCommon 라이브러리의 SerialDate 클래스를 실제로 리팩터링하는 과정을 다룬다. 테스트 보강, 이름 정리, enum 도입, 추상화 경계 정리(팩토리로 구현 은닉)까지의 전체 흐름.
  17. 17
    17장 냄새와 휴리스틱책 전체를 관통하는 코드 냄새와 휴리스틱의 목록이다. 주석(C)·환경(E)·함수(F)·일반(G)·이름(N)·테스트(T) 범주로 나눈 실전 점검표를 대표 항목과 짧은 예시로 정리한다.
  18. 18
    노마드 코더 후기클린 코드 챌린지를 통해 얻은 인사이트와 성장 과정을 기록한 후기다. 책 전체를 관통하는 원칙을 실천 관점에서 다시 정리한다.