# [[3의 법칙 (Rule of Three)]] ## πŸ“Œ Brief Summary 3의 법칙(Rule of Three)은 돈 λ‘œλ²„μΈ (Don Roberts)κ°€ μ œμ•ˆν•˜κ³  λ§ˆν‹΄ 파울러(Martin Fowler)κ°€ λŒ€μ€‘ν™”ν•œ μ†Œν”„νŠΈμ›¨μ–΄ λ¦¬νŒ©ν† λ§μ˜ 핡심 κ²½ν—˜ 법칙(Rule of Thumb)이닀 [1, 2]. 이 법칙은 μœ μ‚¬ν•œ ν˜•νƒœμ˜ μ½”λ“œκ°€ μ„Έ 번 λ°˜λ³΅ν•΄μ„œ μ‚¬μš©λ  λ•Œ λΉ„λ‘œμ†Œ 쀑볡을 ν”Όν•˜κΈ° μœ„ν•΄ λ¦¬νŒ©ν† λ§μ„ μˆ˜ν–‰ν•΄μ•Ό ν•œλ‹€κ³  λͺ…μ‹œν•œλ‹€ [1, 3]. μ΄λŠ” λ¬΄λΆ„λ³„ν•œ λ¦¬νŒ©ν† λ§μœΌλ‘œ μΈν•œ μ˜€λ²„ μ—”μ§€λ‹ˆμ–΄λ§κ³Ό 기술 뢀채 μ‚¬μ΄μ˜ κ· ν˜•μ„ λ§žμΆ”κ³ , μ‹€μš©μ μΈ 섀계 쑰정을 ꢌμž₯ν•˜λŠ” κ°€μ΄λ“œλΌμΈμ΄λ‹€ [3]. ## πŸ“– Core Content * **3단계 μ§„ν–‰ 방식 (Three strikes and you refactor)**: 1. 첫 번째둜 무언가λ₯Ό κ΅¬ν˜„ν•  λ•ŒλŠ” λ‹¨μˆœνžˆ κΈ°λŠ₯을 μ™„μ„±ν•˜λŠ” 데 μ§‘μ€‘ν•˜μ—¬ 일단 μ§„ν–‰ν•œλ‹€ [4-6]. 2. 두 번째둜 λΉ„μŠ·ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•ŒλŠ” μ½”λ“œ μ€‘λ³΅μœΌλ‘œ 인해 λ‹€μ†Œ κΊΌλ¦ΌμΉ™ν•˜κ±°λ‚˜ λΆˆνŽΈν•¨μ„ λŠλΌλ”λΌλ„, 같은 λ°©μ‹μœΌλ‘œ 쀑볡을 ν—ˆμš©ν•˜μ—¬ μ½”λ“œλ₯Ό μž‘μ„±ν•œλ‹€ [2, 4, 6]. 3. μ„Έ 번째둜 λ™μΌν•œ ν˜•νƒœμ˜ μž‘μ—…μ΄ λ°˜λ³΅λ˜λŠ” μ‹œμ μ΄ 였면, κ·Έλ•Œ λΉ„λ‘œμ†Œ λ¦¬νŒ©ν† λ§μ„ μ‹œμž‘ν•˜μ—¬ μ€‘λ³΅λœ μ½”λ“œλ₯Ό μƒˆλ‘œμš΄ ν”„λ‘œμ‹œμ €λ‚˜ 클래슀둜 μΆ”μΆœ 및 κ³΅ν†΅ν™”ν•œλ‹€ [1, 2, 4, 5]. * **νŒ¨ν„΄ 발견과 μ •ν™•ν•œ 좔상화 μœ λ„**: 단 두 번의 μ‚¬λ‘€λ§ŒμœΌλ‘œλŠ” μ½”λ“œμ˜ 곡톡점을 λͺ…ν™•νžˆ μ°ΎκΈ° μ–΄λ €μšΈ 수 μžˆλ‹€. ν•˜μ§€λ§Œ 쀑볡이 μ„Έ 번 이상 λ°œμƒν•  경우, 곡톡점과 차이점의 νŒ¨ν„΄μ„ 훨씬 μ‰½κ²Œ νŒŒμ•…ν•  수 μžˆμ–΄ 더 μ •ν™•ν•˜κ³  μ˜¬λ°”λ₯Έ 좔상화 μˆ˜μ€€μ„ κ²°μ •ν•˜λŠ” 데 도움이 λœλ‹€ [2, 7, 8]. * **κ²½μ œμ„± 관점**: μ½”λ“œμ˜ 쀑볡은 μ½”λ“œλ₯Ό μœ μ§€λ³΄μˆ˜ν•˜κΈ° μ–΄λ ΅κ²Œ λ§Œλ“€μ§€λ§Œ, 3의 법칙은 μ„Έ 개의 볡사본이 μ‘΄μž¬ν•˜κ²Œ 될 λ•Œ λ°œμƒν•˜λŠ” μœ μ§€λ³΄μˆ˜ λΉ„μš©μ΄ λ¦¬νŒ©ν† λ§μ„ μˆ˜ν–‰ν•˜λŠ” λΉ„μš© 및 잠재적인 λ‚˜μœ μ„€κ³„μ˜ μœ„ν—˜μ„±μ„ ν™•μ‹€νžˆ μ΄ˆκ³Όν•˜κ²Œ λœλ‹€λŠ” 것을 λ‚΄ν¬ν•˜κ³  μžˆλ‹€ [1, 9]. ## βš–οΈ Trade-offs & Caveats * **μ„±κΈ‰ν•œ 좔상화(Premature Refactoring)의 μœ„ν—˜μ„±**: μ„Έ 번의 쀑볡이 λ‚˜νƒ€λ‚˜κΈ° 전에 λ„ˆλ¬΄ 일찍 λ¦¬νŒ©ν† λ§μ„ μ‹œλ„ν•˜λ©΄ 잘λͺ»λœ 좔상화λ₯Ό 선택할 μœ„ν—˜μ΄ 컀진닀 [2, 8]. 잘λͺ»λœ 좔상화 λͺ¨λΈμ΄ μ‹œμŠ€ν…œμ— 고착되면, μƒˆλ‘œμš΄ μš”κ΅¬μ‚¬ν•­(μœ μŠ€μΌ€μ΄μŠ€)을 μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ λΆ€μžμ—°μŠ€λŸ¬μš΄ λ§€κ°œλ³€μˆ˜λ‚˜ if λ¬Έ 등을 μ–΅μ§€λ‘œ μΆ”κ°€ν•΄μ•Ό ν•˜λ―€λ‘œ μ½”λ“œ μœ μ—°μ„±μ΄ μ €ν•˜λœλ‹€ [2, 10]. 결둠적으둜 잘λͺ»λœ 좔상화보닀 차라리 μ½”λ“œμ˜ 쀑볡을 λ‚¨κ²¨λ‘λŠ” 것이 μœ μ§€λ³΄μˆ˜ λΉ„μš© μΈ‘λ©΄μ—μ„œ 훨씬 μ €λ ΄ν•˜λ‹€ [11]. * **λ„κ·Έλ§ˆν™”(Dogmatic)에 λŒ€ν•œ 경계**: 3의 법칙은 λ°˜λ“œμ‹œ 100% μ§€μΌœμ•Ό ν•˜λŠ” μ—„κ²©ν•œ ꡐ리가 μ•„λ‹ˆλΌ μ§€μΉ¨μœΌλ‘œ ν™œμš©ν•΄μ•Ό ν•œλ‹€ [12, 13]. μ„Έ 번의 쀑볡이 λ°œκ²¬λ˜μ—ˆλ”λΌλ„ μ˜¬λ°”λ₯Έ 좔상화 방법을 μ°ΎκΈ° μ–΄λ ΅κ±°λ‚˜ μƒˆλ‘œμš΄ κ°œλ…μ— λͺ…ν™•ν•œ 이름을 뢙일 수 μ—†λ‹€λ©΄, μ–΅μ§€λ‘œ 좔상화(over-abstraction)λ₯Ό κ°•μš”ν•΄μ„œλŠ” μ•ˆ λœλ‹€ [12]. 이런 κ²½μš°μ—λŠ” 상황에 λŒ€ν•œ 더 λ§Žμ€ μ»¨ν…μŠ€νŠΈλ₯Ό μ–»κ³  좔가적인 쀑볡 사둀가 λ‚˜νƒ€λ‚  λ•ŒκΉŒμ§€ λ¦¬νŒ©ν† λ§μ„ μœ λ³΄ν•˜κ³  κΈ°λ‹€λ¦¬λŠ” 것이 더 μ•ˆμ „ν•˜λ‹€ [10]. --- *Last updated: 2026-05-03*