# [[YAGNI Principle]] ## πŸ“Œ Brief Summary YAGNIλŠ” "You Aren't Gonna Need It"의 μ•½μžλ‘œ, κ°œλ°œμžκ°€ λ―Έλž˜μ— ν•„μš”ν• μ§€λ„ λͺ¨λ₯Έλ‹€κ³  μΆ”μΈ‘ν•˜μ—¬ λ³΅μž‘ν•œ κΈ°λŠ₯을 미리 κ΅¬μΆ•ν•˜λŠ” 것을 ν”Όν•˜λΌλŠ” μ†Œν”„νŠΈμ›¨μ–΄ 섀계 μ›μΉ™μž…λ‹ˆλ‹€[1, 2]. 이 원칙은 였직 ν˜„μž¬μ˜ μš”κ΅¬μ‚¬ν•­μ—λ§Œ μ§‘μ€‘ν•¨μœΌλ‘œμ¨ μœ μ§€λ³΄μˆ˜ν•΄μ•Ό ν•  λ°λ“œ μ½”λ“œ(dead code)와 λ³΅μž‘μ„±μ„ μ΅œμ†Œν™”ν•˜λŠ” 데 λͺ©μ μ΄ μžˆμŠ΅λ‹ˆλ‹€[1]. 특히 μš”κ΅¬μ‚¬ν•­μ΄ 자주 λ³€κ²½λ˜λŠ” μ• μžμΌ(Agile) ν™˜κ²½μ΄λ‚˜ μŠ€νƒ€νŠΈμ—… ν”„λ‘œμ νŠΈμ—μ„œ 맀우 μ€‘μš”ν•˜κ²Œ λ‹€λ€„μ§‘λ‹ˆλ‹€[1, 3]. ## πŸ“– Core Content * **핡심 κ°œλ… 및 λ„μž… 이유**: YAGNI의 핡심은 "μ •λ§λ‘œ ν•„μš”ν•΄μ§€κΈ° μ „κΉŒμ§€λŠ” κΈ°λŠ₯을 μΆ”κ°€ν•˜μ§€ 말라"λŠ” κ²ƒμž…λ‹ˆλ‹€[2]. μ–Έμ  κ°€ 쓰일지도 λͺ¨λ₯Έλ‹€λŠ” 이유둜 μΆ”κ°€ κΈ°λŠ₯을 μž‘μ„±ν•˜κ²Œ 되면 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” μ‹œκ°„λ§Œ 낭비될 뿐만 μ•„λ‹ˆλΌ, κ²°κ΅­ ν•΄λ‹Ή κΈ°λŠ₯이 ν•„μš” μ—†μ–΄μ§€κ±°λ‚˜ μš”κ΅¬μ‚¬ν•­μ΄ 변경될 κ°€λŠ₯성이 ν½λ‹ˆλ‹€[4]. λ”°λΌμ„œ κ°œλ°œμžλŠ” ν˜„μž¬ λ‹Ήμž₯ ν•„μš”ν•œ κΈ°λŠ₯만 κ΅¬ν˜„ν•˜μ—¬ λΆˆν•„μš”ν•œ 기술 뢀채(tech debt)와 μž‰μ—¬ μ½”λ“œλ₯Ό 쀄여야 ν•©λ‹ˆλ‹€[5]. * **React ν™˜κ²½μ—μ„œμ˜ 적용 (YAGNI in React)**: React μ»΄ν¬λ„ŒνŠΈλ₯Ό 섀계할 λ•Œλ„ YAGNI 원칙을 톡해 μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ²Œ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ»΄ν¬λ„ŒνŠΈλŠ” 였늘 λ‹Ήμž₯ ν•„μš”ν•œ κ²ƒλ§Œ κ΅¬ν˜„ν•˜κ³  ν™•μž₯은 λ‚˜μ€‘μœΌλ‘œ 미뀄야 ν•©λ‹ˆλ‹€[3]. * 예λ₯Ό λ“€μ–΄ ν˜„μž¬ λ‚ μ§œμ˜ μ›μ‹œ 데이터(raw date)만 ν•„μš”ν•œ 상황이라면, λ‚˜μ€‘μ— 쓰일 것 κ°™λ‹€λŠ” 이유둜 λ‚ μ§œ ν¬λ§·νŒ… ν•¨μˆ˜λ₯Ό 미리 μΆ”κ°€ν•˜μ§€ 말아야 ν•©λ‹ˆλ‹€[2]. * λ§ˆμ°¬κ°€μ§€λ‘œ `` μ»΄ν¬λ„ŒνŠΈκ°€ ν˜„μž¬ μ‚¬μš©μž 정보(`user`)만 ν•„μš”λ‘œ ν•œλ‹€λ©΄, 아직 화면에 쓰이지 μ•ŠλŠ” `userSettings`λ‚˜ `userPosts` 같은 μ—¬λΆ„μ˜ propsλ₯Ό μ„ μ œμ μœΌλ‘œ λ„˜κ²¨μ£Όκ±°λ‚˜ κ΅¬ν˜„ν•˜μ§€ μ•ŠλŠ” 것이 쒋은 μ‚¬λ‘€μž…λ‹ˆλ‹€[3]. * **μž₯단점(Trade-offs) 및 졜적의 μ‚¬μš© ν™˜κ²½**: * **μž₯점**: λ‚­λΉ„λ˜λŠ” 개발 λ…Έλ ₯을 쀄여주고 μ½”λ“œλ² μ΄μŠ€λ₯Ό κ°€λ³κ²Œ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€[6]. μ½”λ“œ μžμ²΄κ°€ 뢀채가 λ˜λŠ” 상황을 λ°©μ§€ν•˜κ³  λΆˆν•„μš”ν•œ 뢀뢄을 μ œκ±°ν•˜λŠ” λ¦¬νŒ©ν† λ§μ˜ ν›Œλ₯­ν•œ 기쀀이 λ©λ‹ˆλ‹€[5]. * **단점**: 미래의 ν™•μž₯μ„±(future scalability)을 κ°„κ³Όν•˜κ²Œ 될 μœ„ν—˜μ„±λ„ λ‚΄ν¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€[6]. * **μ‚¬μš© ν™˜κ²½**: μš”κ΅¬μ‚¬ν•­μ΄ κ³„μ†ν•΄μ„œ λ³€ν™”ν•˜λŠ” μŠ€νƒ€νŠΈμ—… ν”„λ‘œμ νŠΈλ‚˜ λΉ λ₯Έ λ¦΄λ¦¬μŠ€κ°€ μ€‘μš”ν•œ μ• μžμΌ 개발 ν™˜κ²½μ—μ„œ μ‚¬μš©ν•˜λŠ” 것이 κ°€μž₯ μ ν•©ν•©λ‹ˆλ‹€[3]. ## πŸ”— Knowledge Connections - **Related Topics:** [[KISS Principle]], [[DRY Principle]], [[Clean Code]], [[Refactoring]] - **Projects/Contexts:** [[React Component Design]], [[Agile Development]], [[Startup Projects]] - **Contradictions/Notes:** YAGNI 원칙은 λΆˆν•„μš”ν•œ λ…Έλ ₯의 λ‚­λΉ„λ₯Ό λ§‰μ•„μ£Όμ§€λ§Œ, 미래의 ν™•μž₯성을 κ³ λ €ν•˜μ§€ λͺ»ν•˜κ²Œ λ§Œλ“€ 수 μžˆλ‹€λŠ” 점이 λ‹¨μ μœΌλ‘œ μ§€μ λ˜λ―€λ‘œ 섀계 μ‹œ κ· ν˜•μ„ μž‘λŠ” 것이 ν•„μš”ν•©λ‹ˆλ‹€[6]. --- *Last updated: 2026-04-26*