Skip to content

Commit f2bb308

Browse files
committed
๐Ÿ“ :: (#0) TDD์™€ Tidy First ์‹คํ–‰ ๊ทœ์•ฝ์„ ํ”„๋กœ์ ํŠธ ๊ทœ์น™์œผ๋กœ ๊ตฌ์ฒดํ™”
Kent Beck์˜ TDD/ Tidy First๋ฅผ ์ด ์ €์žฅ์†Œ์—์„œ ์‹ค์ œ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก plan.md์˜ ์‹คํ–‰ ๊ณ„์•ฝ์„ ๊ตฌ์ฒดํ™”ํ•˜๊ณ  PR ํ…œํ”Œ๋ฆฟ์— ๊ฒ€์ฆ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ์ด์ œ go ๋ช…๋ น์€ ํ…Œ์ŠคํŠธ 1๊ฐœ ๋‹จ์œ„์˜ Red-Green-Refactor ์‚ฌ์ดํด๋กœ ํ•ด์„๋˜๊ณ , PR ๋‹จ๊ณ„์—์„œ๋„ ๊ตฌ์กฐ ๋ณ€๊ฒฝ๊ณผ ๋™์ž‘ ๋ณ€๊ฒฝ์˜ ๋ถ„๋ฆฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. Constraint: plan.md๋Š” ์ €์žฅ์†Œ ์ „์—ญ ์‹คํ–‰ ๊ทœ์น™ ๋ฌธ์„œ์—ฌ์•ผ ํ•œ๋‹ค Constraint: PR ๋‹จ๊ณ„์—์„œ TDD/Tidy First ์ค€์ˆ˜ ์—ฌ๋ถ€๋ฅผ ๋“œ๋Ÿฌ๋‚ด์•ผ ํ•œ๋‹ค Rejected: ์›์น™๋งŒ ์งง๊ฒŒ ์œ ์ง€ | ์‹ค์ œ ์‹คํ–‰/๋ฆฌ๋ทฐ ๋‹จ๊ณ„์—์„œ ๊ฐ•์ œ๋ ฅ์ด ๋ถ€์กฑํ•จ Confidence: high Scope-risk: narrow Reversibility: clean Directive: ์ดํ›„ ๊ธฐ๋Šฅ ์ž‘์—…์€ ๋ฐ˜๋“œ์‹œ Test Queue์˜ ์ฒซ ๋ฏธ์™„๋ฃŒ ํ•ญ๋ชฉ๋ถ€ํ„ฐ ํ•œ ํ…Œ์ŠคํŠธ์”ฉ ์ง„ํ–‰ํ•  ๊ฒƒ Tested: plan.md ๋ฐ PR ํ…œํ”Œ๋ฆฟ diff review Not-tested: automated checks not applicable to markdown-only policy update
1 parent 07f5c28 commit f2bb308

2 files changed

Lines changed: 76 additions & 15 deletions

File tree

โ€Ž.github/PULL_REQUEST_TEMPLATE.mdโ€Ž

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,17 @@
44
## ์ž‘์—…์‚ฌํ•ญ
55
- [x] <!-- ์ž‘์—… ์‚ฌํ•ญ ์ž‘์„ฑ -->
66

7+
## TDD ์ฒดํฌ
8+
- [ ] failing test๋ถ€ํ„ฐ ์‹œ์ž‘ํ–ˆ๋‹ค
9+
- [ ] ์ตœ์†Œ ๊ตฌํ˜„์œผ๋กœ Green์„ ๋งŒ๋“ค์—ˆ๋‹ค
10+
- [ ] Refactor๋Š” Green ์ดํ›„์—๋งŒ ์ˆ˜ํ–‰ํ–ˆ๋‹ค
11+
12+
## Tidy First ์ฒดํฌ
13+
- [ ] ๊ตฌ์กฐ ๋ณ€๊ฒฝ๊ณผ ๋™์ž‘ ๋ณ€๊ฒฝ์„ ๋ถ„๋ฆฌํ–ˆ๋‹ค
14+
- [ ] ๊ตฌ์กฐ ๋ณ€๊ฒฝ๋งŒ ์žˆ๋Š” ์ปค๋ฐ‹์€ ๋™์ž‘์„ ๋ฐ”๊พธ์ง€ ์•Š์•˜๋‹ค
15+
16+
## Test plan
17+
- [ ] <!-- ์‹คํ–‰ํ•œ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ -->
18+
719
## UI
820
<img src="<!-- ์ด๋ฏธ์ง€ ๋งํฌ ์ž‘์„ฑ -->" width="150px"></img>

โ€Žplan.mdโ€Ž

Lines changed: 64 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,63 @@
11
# TDD / Tidy First Plan
22

3-
์ด ์ €์žฅ์†Œ์—์„œ๋Š” ์•ž์œผ๋กœ ๋ชจ๋“  ์ž‘์—…์„ ์•„๋ž˜ ๊ทœ์น™์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค.
3+
์ด ์ €์žฅ์†Œ์—์„œ๋Š” ์•ž์œผ๋กœ ๋ชจ๋“  ์ž‘์—…์„ Kent Beck์˜ TDD / Tidy First ์›์น™์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค.
4+
`go` ๋ผ๊ณ  ํ•˜๋ฉด ์ด ๋ฌธ์„œ๋ฅผ ํ˜„์žฌ ์ž‘์—…์˜ ๋‹จ์ผ ์‹คํ–‰ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
45

56
## Always Follow
6-
- ํ•ญ์ƒ Red โ†’ Green โ†’ Refactor ์ˆœ์„œ๋ฅผ ์ง€ํ‚จ๋‹ค.
7-
- ํ•œ ๋ฒˆ์— ํ…Œ์ŠคํŠธ ํ•˜๋‚˜๋งŒ ์ถ”๊ฐ€ํ•œ๋‹ค.
8-
- ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•œ ๋’ค์—๋งŒ ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.
9-
- ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ์‹œํ‚ค๋Š” ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ๋งŒ ์ž‘์„ฑํ•œ๋‹ค.
10-
- ๊ตฌ์กฐ ๋ณ€๊ฒฝ(Structural change)๊ณผ ๋™์ž‘ ๋ณ€๊ฒฝ(Behavioral change)์„ ๊ฐ™์€ ์ปค๋ฐ‹์— ์„ž์ง€ ์•Š๋Š”๋‹ค.
11-
- ๊ตฌ์กฐ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด ๋จผ์ € ๊ตฌ์กฐ๋งŒ ๋ฐ”๊พธ๊ณ  ํ…Œ์ŠคํŠธ๋กœ ์•ˆ์ „์„ฑ์„ ํ™•์ธํ•œ๋‹ค.
12-
- `go` ๋ผ๊ณ  ํ•˜๋ฉด ์•„๋ž˜ `Test Queue`์—์„œ ์ฒดํฌ๋˜์ง€ ์•Š์€ ์ฒซ ๋ฒˆ์งธ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
13-
- ๊ฐ `go` ์‚ฌ์ดํด์˜ ๊ธฐ๋ณธ ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
14-
1. ๋‹ค์Œ ๋ฏธ์™„๋ฃŒ ํ…Œ์ŠคํŠธ ์„ ํƒ
15-
2. ํ…Œ์ŠคํŠธ ์ž‘์„ฑ ๋ฐ ์‹คํŒจ ํ™•์ธ (Red)
16-
3. ์ตœ์†Œ ๊ตฌํ˜„์œผ๋กœ ํ…Œ์ŠคํŠธ ํ†ต๊ณผ (Green)
17-
4. ํ•„์š” ์‹œ ๊ตฌ์กฐ ๊ฐœ์„  (Refactor / Tidy First)
18-
5. ๊ด€๋ จ ํ…Œ์ŠคํŠธ ์žฌ์‹คํ–‰
19-
6. ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๊ฐฑ์‹ 
7+
- ํ•ญ์ƒ **Red โ†’ Green โ†’ Refactor** ์ˆœ์„œ๋ฅผ ์ง€ํ‚จ๋‹ค.
8+
- ํ•œ ๋ฒˆ์— ํ…Œ์ŠคํŠธ **ํ•˜๋‚˜๋งŒ** ์ถ”๊ฐ€ํ•œ๋‹ค.
9+
- ํ…Œ์ŠคํŠธ๊ฐ€ **์‹คํŒจํ•˜๋Š” ๊ฒƒ์„ ๋จผ์ € ํ™•์ธ**ํ•œ ๋’ค์—๋งŒ ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.
10+
- ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ์‹œํ‚ค๋Š” **์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ๋งŒ** ์ž‘์„ฑํ•œ๋‹ค.
11+
- **๊ตฌ์กฐ ๋ณ€๊ฒฝ(Structural change)** ๊ณผ **๋™์ž‘ ๋ณ€๊ฒฝ(Behavioral change)** ์„ ๊ฐ™์€ ์ปค๋ฐ‹์— ์„ž์ง€ ์•Š๋Š”๋‹ค.
12+
- ๊ตฌ์กฐ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋ฉด **๋จผ์ € ๊ตฌ์กฐ๋งŒ** ๋ฐ”๊พธ๊ณ  ํ…Œ์ŠคํŠธ๋กœ ์•ˆ์ „์„ฑ์„ ํ™•์ธํ•œ๋‹ค.
13+
- ๋ฆฌํŒฉํ„ฐ๋ง์€ **ํ…Œ์ŠคํŠธ๊ฐ€ ๋ชจ๋‘ ์ดˆ๋ก๋ถˆ์ผ ๋•Œ๋งŒ** ์ˆ˜ํ–‰ํ•œ๋‹ค.
14+
- ๊ฐ ๋‹จ๊ณ„๊ฐ€ ๋๋‚  ๋•Œ๋งˆ๋‹ค **๊ด€๋ จ ํ…Œ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰**ํ•œ๋‹ค.
15+
16+
## Tidy First Rules
17+
18+
### Structural Change
19+
๋‹ค์Œ์€ ๊ตฌ์กฐ ๋ณ€๊ฒฝ์œผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.
20+
- ์ด๋ฆ„ ๋ณ€๊ฒฝ
21+
- ํŒŒ์ผ ์ด๋™
22+
- ํƒ€์ž…/๋ฉ”์„œ๋“œ ์ถ”์ถœ
23+
- ์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ์œ„ํ•œ ์žฌ๋ฐฐ์น˜
24+
- ์˜์กด์„ฑ ๋ฐฉํ–ฅ์€ ์œ ์ง€ํ•œ ์ฑ„ ํ‘œํ˜„๋งŒ ์ •๋ฆฌํ•˜๋Š” ๋ณ€๊ฒฝ
25+
26+
๊ตฌ์กฐ ๋ณ€๊ฒฝ ๋‹จ๊ณ„์—์„œ๋Š”:
27+
- ๋™์ž‘์„ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค.
28+
- ๊ฐ€๋Šฅํ•œ ํ•œ ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆˆ๋‹ค.
29+
- ๋ณ€๊ฒฝ ์ „/ํ›„ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.
30+
- ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์™€ PR ์„ค๋ช…์— ๊ตฌ์กฐ ๋ณ€๊ฒฝ์ž„์„ ๋“œ๋Ÿฌ๋‚ธ๋‹ค.
31+
32+
### Behavioral Change
33+
๋‹ค์Œ์€ ๋™์ž‘ ๋ณ€๊ฒฝ์œผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.
34+
- ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
35+
- ๋ถ„๊ธฐ/์ƒํƒœ/ํ™”๋ฉด ํ๋ฆ„ ๋ณ€๊ฒฝ
36+
- ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด๋Š” ๊ฒฐ๊ณผ ๋ณ€๊ฒฝ
37+
- ๋ฒ„๊ทธ ์ˆ˜์ •
38+
39+
๋™์ž‘ ๋ณ€๊ฒฝ ๋‹จ๊ณ„์—์„œ๋Š”:
40+
- ๋ฐ˜๋“œ์‹œ ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
41+
- ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ์‹œํ‚ค๋Š” ์ตœ์†Œ ๊ตฌํ˜„๋งŒ ํ•œ๋‹ค.
42+
- ์ดˆ๋ก๋ถˆ ์ดํ›„์—๋งŒ ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ•œ๋‹ค.
43+
44+
## `go` Execution Contract
45+
`go` ๋ผ๊ณ  ํ•˜๋ฉด ์•„๋ž˜ ์ˆœ์„œ๋กœ ์ •ํ™•ํžˆ ์ˆ˜ํ–‰ํ•œ๋‹ค.
46+
1. `Test Queue` ์—์„œ ์ฒดํฌ๋˜์ง€ ์•Š์€ ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์„ ์ฐพ๋Š”๋‹ค.
47+
2. ํ•ด๋‹น ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ **ํ•˜๋‚˜๋งŒ** ์ž‘์„ฑํ•œ๋‹ค.
48+
3. ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. (**Red**)
49+
4. ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ์‹œํ‚ค๋Š” ์ตœ์†Œ ๊ตฌํ˜„๋งŒ ์ถ”๊ฐ€ํ•œ๋‹ค. (**Green**)
50+
5. ๋ชจ๋“  ๊ด€๋ จ ํ…Œ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•œ๋‹ค.
51+
6. ๊ตฌ์กฐ ๊ฐœ์„ ์ด ํ•„์š”ํ•˜๋ฉด ๋ณ„๋„ ๊ตฌ์กฐ ๋ณ€๊ฒฝ์œผ๋กœ๋งŒ ์ •๋ฆฌํ•œ๋‹ค. (**Refactor / Tidy First**)
52+
7. `Test Queue` ์ƒํƒœ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.
53+
54+
## Definition of Done for One Step
55+
ํ•˜๋‚˜์˜ `go` ๋‹จ๊ณ„๋Š” ์•„๋ž˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ๋งŒ ๋๋‚œ๋‹ค.
56+
- ์ด๋ฒˆ ๋‹จ๊ณ„์—์„œ ์ถ”๊ฐ€ํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
57+
- ์ƒˆ ํ…Œ์ŠคํŠธ๊ฐ€ ์ฒ˜์Œ์—๋Š” ์‹คํŒจํ–ˆ๋‹ค.
58+
- ํ˜„์žฌ๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•œ๋‹ค.
59+
- ๊ตฌ์กฐ ๋ณ€๊ฒฝ๊ณผ ๋™์ž‘ ๋ณ€๊ฒฝ์˜ ๊ฒฝ๊ณ„๊ฐ€ ์„ค๋ช… ๊ฐ€๋Šฅํ•˜๋‹ค.
60+
- ๋‹ค์Œ์— ์ง„ํ–‰ํ•  ํ…Œ์ŠคํŠธ๊ฐ€ `Test Queue` ์— ๋ช…ํ™•ํžˆ ๋‚จ์•„ ์žˆ๋‹ค.
2061

2162
## Swift Rules
2263
- Swift์—์„œ๋Š” ์˜๋ฏธ๊ฐ€ ๋ถ„๋ช…ํ•œ ํƒ€์ž…/๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ ์šฐ์„ ํ•œ๋‹ค.
@@ -25,5 +66,13 @@
2566
- ๋ ˆ์ด์–ด ์—ญ๋ฐฉํ–ฅ import ๊ธˆ์ง€.
2667
- ๋ชจ๋“  ์˜์กด์„ฑ์€ Assembly๋ฅผ ํ†ตํ•ด ๋“ฑ๋กํ•œ๋‹ค.
2768

69+
## PR / Commit Rules
70+
- ํ•œ PR ์•ˆ์—์„œ๋„ ๊ตฌ์กฐ ๋ณ€๊ฒฝ ์ปค๋ฐ‹๊ณผ ๋™์ž‘ ๋ณ€๊ฒฝ ์ปค๋ฐ‹์„ ๋ถ„๋ฆฌํ•œ๋‹ค.
71+
- PR ์„ค๋ช…์—๋Š” ์•„๋ž˜๋ฅผ ํฌํ•จํ•œ๋‹ค.
72+
- ์–ด๋–ค ํ…Œ์ŠคํŠธ๊ฐ€ ๋จผ์ € ์‹คํŒจํ–ˆ๋Š”์ง€
73+
- ์–ด๋–ค ์ตœ์†Œ ๊ตฌํ˜„์œผ๋กœ ์ดˆ๋ก๋ถˆ์„ ๋งŒ๋“ค์—ˆ๋Š”์ง€
74+
- ์–ด๋–ค ๊ตฌ์กฐ ๊ฐœ์„ ์„ ๋‚˜์ค‘์— ํ–ˆ๋Š”์ง€
75+
- ํ…Œ์ŠคํŠธ ์—†์ด ๊ธฐ๋Šฅ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ๋„ฃ๋Š” ๋ณ€๊ฒฝ์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
76+
2877
## Test Queue
2978
- [ ] ๋‹ค์Œ ๊ธฐ๋Šฅ ์ž‘์—…์ด ์ •ํ•ด์ง€๋ฉด ์ฒซ failing test ๋ฅผ ์—ฌ๊ธฐ์— ์ถ”๊ฐ€ํ•œ๋‹ค.

0 commit comments

Comments
ย (0)