# [[KISS]] ## πŸ“Œ Brief Summary KISS("Keep It Simple, Stupid" λ˜λŠ” "leave the code simple and dumb")λŠ” λ³΅μž‘μ„±λ³΄λ‹€ λ‹¨μˆœμ„±μ„ 항상 μš°μ„ μ‹œν•΄μ•Ό ν•œλ‹€λŠ” μ†Œν”„νŠΈμ›¨μ–΄ μ—”μ§€λ‹ˆμ–΄λ§ μ›μΉ™μž…λ‹ˆλ‹€ [1-3]. κ³Όλ„ν•œ μΆ”μƒν™”λ‚˜ λΆˆν•„μš”ν•œ λ³΅μž‘μ„±μ„ ν”Όν•˜κ³ , μ½”λ“œλ₯Ό 직관적이고 μ΄ν•΄ν•˜κΈ° 쉽고 κ°„λ‹¨ν•˜κ²Œ μœ μ§€ν•˜λŠ” 것을 핡심 λͺ©ν‘œλ‘œ μ‚ΌμŠ΅λ‹ˆλ‹€ [2-4]. 이 원칙은 특히 λΉ λ₯Έ ν”„λ‘œν† νƒ€μ΄ν•‘(Quick prototyping)μ΄λ‚˜ λ‹¨μˆœν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ— μ ν•©ν•˜λ©°, React μ»΄ν¬λ„ŒνŠΈ 개발 μ‹œ μ‘°κΈ° μ΅œμ ν™”(premature optimization)λ₯Ό ν”Όν•˜κ³  예츑 κ°€λŠ₯성을 λ†’μ΄λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ [1, 5]. ## πŸ“– Core μ†ŒμŠ€ * **λ‹¨μˆœμ„± 좔ꡬ:** KISS 원칙은 μ½”λ“œλ₯Ό "λ‹¨μˆœν•˜κ³  λ©μ²­ν•˜κ²Œ(simple and dumb)" λ‚¨κ²¨λ‘λΌλŠ” μ˜λ―Έμž…λ‹ˆλ‹€ [3]. μ½”λ“œλ₯Ό λ³΅μž‘ν•˜κ²Œ λ§Œλ“€μ§€ 말고, νŠΉμ • ν•¨μˆ˜λ‚˜ μ»΄ν¬λ„ŒνŠΈκ°€ λ„ˆλ¬΄ 컀질 경우 더 μž‘κ³  μ΄ν•΄ν•˜κΈ° μ‰¬μš΄ 논리적인 λ‹¨μœ„λ‘œ λΆ„ν• ν•  것을 ꢌμž₯ν•©λ‹ˆλ‹€ [3]. * **κ³Όλ„ν•œ 좔상화 경계:** μ½”λ“œλ₯Ό μž¬μ‚¬μš©ν•˜κΈ° μœ„ν•œ 좔상화가 μ›λž˜μ˜ 쀑볡 μ½”λ“œλ³΄λ‹€ 였히렀 μ΄ν•΄ν•˜κΈ° μ–΄λ €μšΈ μ •λ„λ‘œ λ³΅μž‘ν•΄μ§„λ‹€λ©΄, μ΄λŠ” λͺ©μ μ„ μžƒκ³  KISS 원칙을 μœ„λ°˜ν•œ κ²ƒμž…λ‹ˆλ‹€ [4]. * **Reactμ—μ„œμ˜ ν™œμš©:** React μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ»΄ν¬λ„ŒνŠΈ λ‘œμ§μ„ λΆˆν•„μš”ν•˜κ²Œ κΌ¬μ§€ μ•Šκ³  λͺ…ν™•νžˆ κ΅¬ν˜„ν•¨μœΌλ‘œμ¨, μ½”λ“œκ°€ μƒν˜Έ 간에 κ²°ν•©λ˜μ§€ μ•Šκ³ (decoupled) 예츑 κ°€λŠ₯ν•˜λ„λ‘(predictable) μœ μ§€ν•˜λŠ” 데 ν•„μˆ˜μ μΈ 역할을 ν•©λ‹ˆλ‹€ [1, 5]. ## βš–οΈ Trade-offs & Caveats KISS 원칙을 μ€€μˆ˜ν•˜λ©΄ μ½”λ“œκ°€ κ°„λ‹¨ν•˜κ³  μ§μ„ μ μ΄μ–΄μ„œ 디버깅이 μ‰¬μ›Œμ§„λ‹€λŠ” κ°•λ ₯ν•œ μž₯점이 μžˆμŠ΅λ‹ˆλ‹€ [6]. κ·ΈλŸ¬λ‚˜ λ‹€μŒκ³Ό 같은 ν•œκ³„μ™€ μ œμ•½ 사항(Trade-offs)이 μ‘΄μž¬ν•©λ‹ˆλ‹€: * **κ³Όλ„ν•œ λ‹¨μˆœν™”μ˜ μœ„ν—˜:** 이 μ›μΉ™μ—λ§Œ μ§€λ‚˜μΉ˜κ²Œ λͺ°λ‘ν•  경우 λ¬Έμ œμ— λŒ€ν•œ ν•΄κ²°μ±… 자체λ₯Ό λ„ˆλ¬΄ λ‹¨μˆœν™”(oversimplify)ν•˜μ—¬, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μš”κ΅¬ 사항을 μΆ©μ‘±μ‹œν‚€μ§€ λͺ»ν•˜κ±°λ‚˜ 미래의 ν™•μž₯성을 λ–¨μ–΄λœ¨λ¦΄ 수 μžˆμŠ΅λ‹ˆλ‹€ [6]. * **DRY μ›μΉ™κ³Όμ˜ 좩돌:** "μžμ‹ μ„ λ°˜λ³΅ν•˜μ§€ 말라"λŠ” DRY(Don't Repeat Yourself) 원칙과 μ’…μ’… κ· ν˜•μ„ 이루어야 ν•©λ‹ˆλ‹€. 쀑볡을 ν”Όν•˜κΈ° μœ„ν•΄ μ½”λ“œλ₯Ό 계속 μΆ”μƒν™”ν•˜λ‹€ 보면 λ³΅μž‘μ„±μ΄ μ¦κ°€ν•˜μ—¬ κ²°κ΅­ KISS 원칙을 μ–΄κΈ°κ²Œ 될 수 μžˆμœΌλ―€λ‘œ, μ μ ˆν•œ μ„ μ—μ„œ λ‹¨μˆœμ„±μ„ μœ μ§€ν•˜λŠ” 톡찰이 ν•„μš”ν•©λ‹ˆλ‹€ [4]. ## πŸ”— Knowledge Connections ### Related Concepts #### [μ†Œν”„νŠΈμ›¨μ–΄ 섀계 원칙 (Software Design Principles)] - [[DRY (Don't Repeat Yourself)]] - μ—°κ²° 이유: μ½”λ“œλ₯Ό κΉ”λ”ν•˜κ²Œ μœ μ§€ν•˜κΈ° μœ„ν•΄ KISS와 ν•¨κ»˜ μ–ΈκΈ‰λ˜λŠ” 핡심 μ›μΉ™μž…λ‹ˆλ‹€. κ³Όλ„ν•œ DRY μ μš©μ€ KISS μœ„λ°˜μœΌλ‘œ μ΄μ–΄μ§€λ―€λ‘œ μƒν˜Έ 보완적인 관계에 μžˆμŠ΅λ‹ˆλ‹€ [2, 4]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ½”λ“œ 쀑볡 μ œκ±°μ™€ μΆ”μƒν™”μ˜ λ³΅μž‘μ„± μ‚¬μ΄μ—μ„œ λ°œμƒν•˜λŠ” 기술적 νŠΈλ ˆμ΄λ“œμ˜€ν”„ [4]. - [[YAGNI (You Aren't Gonna Need It)]] - μ—°κ²° 이유: λ‹Ήμž₯ ν•„μš”ν•˜μ§€ μ•Šμ€ κΈ°λŠ₯은 μΆ”κ°€ν•˜μ§€ λ§λΌλŠ” μ›μΉ™μœΌλ‘œ, λΆˆν•„μš”ν•œ λ‘œμ§μ„ λ°°μ œν•˜μ—¬ μ½”λ“œλ₯Ό λ‹¨μˆœν•˜κ²Œ μœ μ§€ν•œλ‹€λŠ” μ μ—μ„œ KISS μ›μΉ™μ˜ μ² ν•™κ³Ό 깊이 μ—°κ²°λ©λ‹ˆλ‹€ [2, 7]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ• μžμΌ 개발 ν™˜κ²½μ΄λ‚˜ μš”κ΅¬ 사항이 λ³€ν•˜λŠ” μŠ€νƒ€νŠΈμ—… ν”„λ‘œμ νŠΈμ—μ„œ λΆˆν•„μš”ν•œ μž‘μ—…κ³Ό μ‘°κΈ° μ΅œμ ν™”λ₯Ό ν”Όν•˜λŠ” 방법 [2, 5]. #### [React κ΅¬ν˜„ 및 μ½”λ“œ ν’ˆμ§ˆ (Implementation & Code Quality)] - [[Clean Code]] - μ—°κ²° 이유: KISS 원칙을 μ μš©ν•˜λŠ” ꢁ극적인 λͺ©μ μ€ μœ μ§€λ³΄μˆ˜κ°€ 쉽고 가독성이 높은 클린 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 데 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€ [2]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: λ³΅μž‘μ„±μ„ λ°°μ œν•˜κ³  쀑첩 ꡬ쑰λ₯Ό ν”Όν•˜λ©° λͺ…ν™•ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 싀무적인 κ°€μ΄λ“œλΌμΈ [2, 8]. ### Deeper Research Questions - React μ»΄ν¬λ„ŒνŠΈλ₯Ό 섀계할 λ•Œ KISS 원칙을 μœ„λ°˜ν•˜λŠ” 'κ³Όλ„ν•œ 좔상화'의 ꡬ체적인 νŒλ‹¨ 기쀀은 무엇인가? [4] - KISS 원칙과 DRY 원칙이 μΆ©λŒν•  λ•Œ, μ–΄λŠ μ‹œμ μ— 좔상화λ₯Ό λ©ˆμΆ”κ³  μ½”λ“œ 쀑볡을 ν—ˆμš©ν•˜λŠ” 것이 μœ μ§€λ³΄μˆ˜μ— 더 μœ λ¦¬ν•œκ°€? [4] - KISS 원칙을 κ³ μˆ˜ν•˜μ—¬ 해결책을 'κ³Όλ„ν•˜κ²Œ λ‹¨μˆœν™”(oversimplify)'ν–ˆμ„ λ•Œ, ν”„λ‘œμ νŠΈμ˜ ν™•μž₯μ„±(Scalability) μΈ‘λ©΄μ—μ„œ λ°œμƒν•  수 μžˆλŠ” ꡬ체적인 ν•œκ³„λŠ” 무엇인가? [6] - λΉ λ₯΄κ³  λ‹¨μˆœν•œ ν”„λ‘œν† νƒ€μ΄ν•‘μ„ μœ„ν•΄ KISS 원칙을 주둜 μ μš©ν•œ 이후, λŒ€κ·œλͺ¨ μ•„ν‚€ν…μ²˜λ‘œ μ μ§„μ μœΌλ‘œ ν™•μž₯ν•˜λ €λ©΄ μ–΄λ–€ ꡬ쑰적 λ³€ν™”κ°€ ν•„μš”ν•œκ°€? [5] - μ»΄ν¬λ„ŒνŠΈκ°€ λΉ„λŒ€ν•΄μ§ˆ λ•Œ KISS 원칙에 따라 "μž‘κ³  μ΄ν•΄ν•˜κΈ° μ‰¬μš΄ 논리적 λΆ€λΆ„"으둜 λΆ„ν• ν•˜κΈ° μœ„ν•œ React μƒνƒœκ³„μ˜ 졜적의 νŒ¨ν„΄μ€ 무엇인가? [3] ### Practical Application Contexts - **Implementation:** React μ»΄ν¬λ„ŒνŠΈλ₯Ό μž‘μ„±ν•  λ•Œ, λ‘œμ§μ„ λ‹¨μˆœν•˜κ²Œ μœ μ§€ν•˜κ³  μ‘°κΈ° μ΅œμ ν™”λ₯Ό μ§€μ–‘ν•©λ‹ˆλ‹€. μ»΄ν¬λ„ŒνŠΈκ°€ λ„ˆλ¬΄ 컀지면 더 μž‘κ³  μ΄ν•΄ν•˜κΈ° μ‰¬μš΄ ν•¨μˆ˜λ‚˜ λ‹¨μœ„λ‘œ λ‚˜λˆ•λ‹ˆλ‹€ [3, 5]. - **System Design:** λΉ λ₯΄κ³  κ°„λ‹¨ν•œ ν”„λ‘œν† νƒ€μ΄ν•‘(Quick prototyping)μ΄λ‚˜ ꡬ쑰가 λ‹¨μˆœν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 섀계할 λ•Œ 주된 μ›μΉ™μœΌλ‘œ μ±„νƒλ©λ‹ˆλ‹€ [5]. - **Operation / Maintenance:** μ½”λ“œλ₯Ό 직선적이고 바보 같을 μ •λ„λ‘œ λ‹¨μˆœν•˜κ²Œ μœ μ§€ν•˜μ—¬, 버그 λ°œμƒ μ‹œ λΉ λ₯΄κ³  μ‰½κ²Œ 디버깅할 수 μžˆλ„λ‘ 운영 ν™˜κ²½μ„ κ°œμ„ ν•©λ‹ˆλ‹€ [3, 6]. - **Learning Path:** λ³΅μž‘μ„±μ„ λœμ–΄λ‚΄λŠ” 방법을 배우기 μœ„ν•΄ SOLID, DRY, YAGNI λ“±κ³Ό ν•¨κ»˜ ν”„λ‘ νŠΈμ—”λ“œ μ—”μ§€λ‹ˆμ–΄λ§μ˜ ν•„μˆ˜ 기초 섀계 μ›μΉ™μœΌλ‘œ ν•™μŠ΅ν•©λ‹ˆλ‹€ [1, 9]. - **My Project Relevance:** React ν”„λ‘œμ νŠΈμ—μ„œ μ½”λ“œλ₯Ό λ¦¬νŒ©ν„°λ§ν•  λ•Œ λΆˆν•„μš”ν•˜κ²Œ λ³΅μž‘ν•΄μ§„ 곡톡 ν›…(Hook)μ΄λ‚˜ μœ ν‹Έλ¦¬ν‹°κ°€ μ—†λŠ”μ§€ μ κ²€ν•˜κ³ , μ΄ν•΄ν•˜κΈ° μ–΄λ €μš΄ μ½”λ“œλŠ” μ§κ΄€μ μœΌλ‘œ μž¬μž‘μ„±ν•˜λŠ” 데 ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [4, 5]. ### Adjacent Topics - [[SOLID Principles]] - ν™•μž₯ λ°©ν–₯: λ‹¨μˆœμ„±μ„ λ„˜μ–΄μ„œ, 크고 λ³΅μž‘ν•œ λŒ€κ·œλͺ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μš”κ΅¬ν•˜λŠ” ꡬ쑰화 및 ν™•μž₯성을 μΆ©μ‘±ν•˜κΈ° μœ„ν•΄ 객체지ν–₯/ν•¨μˆ˜ν˜• 섀계 원칙(단일 μ±…μž„ 원칙, μ˜μ‘΄μ„± μ—­μ „ λ“±)이 μ–΄λ–»κ²Œ ν•¨κ»˜ μ‘°ν™”λ₯Ό μ΄λ£¨λŠ”μ§€ νƒκ΅¬ν•©λ‹ˆλ‹€ [5, 9, 10]. --- *Last updated: 2026-04-30*