Skip to content

junhyeong9812/tidy-first-example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tidy First? - 실습 프로젝트

Kent Beck의 「Tidy First?」를 읽으며 각 챕터별로 직접 코드 정리를 실습하는 프로젝트

구조

각 챕터 디렉터리에는 두 가지 파일이 있습니다:

  • Before.java — 정리가 필요한 코드 (일부러 지저분하게 작성)
  • After.java — 빈 클래스 (직접 정리한 결과를 작성)

챕터 목록

Part I. 코드 정리법 (Tidyings)

챕터 주제 핵심
01 Guard Clauses (보호 구문) 중첩 조건문을 조기 반환으로 정리
02 Dead Code (안 쓰는 코드) 사용하지 않는 코드 제거
03 Normalize Symmetries (대칭으로 맞추기) 비일관적 패턴을 일관되게
04 New Interface, Old Implementation (새 인터페이스, 기존 구현) 기존 코드 위에 깔끔한 인터페이스
05 Reading Order (읽는 순서) 코드를 읽기 좋은 순서로 재배치
06 Cohesion Order (응집도를 높이는 배치) 관련 코드끼리 가까이
07 Move Declaration and Initialization Together (선언과 초기화를 함께) 변수 선언과 사용을 가까이
08 Explaining Variables (설명하는 변수) 복잡한 표현식에 이름 부여
09 Explaining Constants (설명하는 상수) 매직 넘버를 상수로
10 Explicit Parameters (명시적인 매개변수) 암묵적 의존을 명시적 파라미터로
11 Chunk Statements (비슷한 코드끼리) 빈 줄로 논리적 그룹 구분
12 Extract Helper (도우미 추출) 코드 덩어리를 의미 있는 메서드로
13 One Pile (하나의 더미) 과하게 나뉜 코드를 합쳐서 보기
14 Explaining Comments (설명하는 주석) 코드가 말하지 못하는 '왜'를 주석으로
15 Delete Redundant Comments (불필요한 주석 지우기) 코드가 이미 말하는 것을 반복하는 주석 제거

Part II. 관리 (Managing)

챕터 주제 핵심
16 Separate Tidying (코드 정리 구분) 정리와 동작 변경을 커밋으로 분리
17 Chaining (연쇄) 정리가 다음 정리를 부를 때
18 Batch Sizes (묶음 크기) 한 번에 얼마나 정리할 것인가
19 Rhythm (리듬) 정리의 타이밍과 흐름
20 Getting Untangled (얽힘 풀기) 구조 변경과 동작 변경이 섞였을 때
21 First, After, Later, Never (먼저, 나중에, 더 나중에, 안 하기) 언제 정리할 것인가의 판단

Part III. 이론 (Theory)

챕터 주제 핵심
22 Beneficially Relating Elements (유익하게 관계 맺는 요소들) 소프트웨어 설계의 본질
23 Structure and Behavior (구조와 동작) 구조 변경 vs 동작 변경
24 Economics: Time Value and Optionality (경제학) 설계 판단의 경제적 근거
25 A Dollar Today > A Dollar Tomorrow (오늘의 1달러) 시간 가치
26 Options (선택권) 소프트웨어가 만드는 선택권의 가치
27 Options Versus Cash Flows (선택권 vs 현금 흐름) 옵션과 즉시 수익의 균형
28 Reversible Structure Changes (되돌릴 수 있는 구조 변경) 가역적 변경의 가치
29 Coupling (결합도) 결합이 변경 비용을 만든다
30 Constantine's Equivalence (콘스탄틴의 등가성) 결합도와 변경 비용의 관계
31 Coupling Versus Decoupling (결합도 제거) 언제 결합을 끊을 것인가
32 Cohesion (응집도) 함께 변하는 것은 함께 두라
33 Conclusion (결론) 소프트웨어 설계는 인간관계의 연습

실습 방법

  1. 챕터를 읽는다
  2. Before.java를 본다
  3. After.java에 직접 정리한 코드를 작성한다
  4. 커밋 메시지에 왜 그렇게 정리했는지 적는다
  5. Part II, III는 README.md에 생각을 정리한다

환경

  • Java 25
  • Gradle

About

tidy-first라는 책의 방식들에 대해 예제 형식의 프로젝트

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages