Skip to content

Commit

Permalink
Merge pull request #1321 from JoYouMe/master
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] authored Feb 5, 2024
2 parents 5f154ee + b184e7a commit ee940c6
Showing 1 changed file with 145 additions and 0 deletions.
145 changes: 145 additions & 0 deletions youMe/2024-02-02-Ch03_Bad_Smells_in_code.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
# Chapter 03 ์ฝ”๋“œ์—์„œ ๋‚˜๋Š” ์•…์ทจ

> ๋ƒ„์ƒˆ ๋‚˜๋ฉด ๋‹น์žฅ ๊ฐˆ์•„๋ผ. ์ผ„ํŠธ๋ฒก ํ™œ๋จธ๋‹ˆ์˜ ์œก์•„ ์›์น™
๋ฆฌํŒฉํ„ฐ๋ง์€ '์ ์šฉ-๋ฐฉ๋ฒ•'์„ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ๊ณผ '์ œ๋•Œ ์ ์šฉํ•  ์ค„ ์•„๋Š” ๊ฒƒ'์€ ๋‹ค๋ฅด๋‹ค. ๋ฆฌํŒฉํ„ฐ๋ง์„ ์‹œ์ž‘ํ•˜๊ณ  ๋ฉˆ์ถœ ๋•Œ๋ฅผ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์€ ๋ฆฌํŒฉํ„ฐ๋ง์˜ ์ž‘๋™์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ๊ณผ ์ค‘์š”ํ•˜๋‹ค. ๋ฆฌํŒฉํ„ฐ๋งํ•  ์‹œ์ ์„ ํŒ๋‹จํ•˜๋Š” ๋ฐ '๋ƒ„์ƒˆ'๋ผ๋Š” ํ‘œํ˜„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฆฌํŒฉํ„ฐ๋ง์„ ๋ฉˆ์ถ”๋Š” ๊ธฐ์ค€์€ ์ •ํ™•ํ•œ ๊ธฐ์ค€์ด ์•„๋‹ˆ๋ผ ๋ฌธ์ œ์˜ ์ง•ํ›„๋ฅผ ์ œ์‹œํ•˜๊ณ , ๊ฒฝํ—˜์„ ํ†ตํ•ด ๊ฐ์„ ํ‚ค์›Œ์•ผ ํ•œ๋‹ค. ๋ฆฌํŒฉํ„ฐ๋ง ๊ธฐ๋ฒ•์„ ์ ์šฉํ•  ๋•Œ๋Š” ๋ƒ„์ƒˆ๋ฅผ ์ฐพ๊ณ , ์ด ์ฑ…์˜ ๋‚ด์šฉ๊ณผ ๋ถ€๋ก B๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๋‚˜์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

---

#### 1. ๊ธฐ์ดํ•œ ์ด๋ฆ„ (Mysterious Name)

์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ด๋ฆ„์„ ๋ช…๋ฃŒํ•˜๊ณ  ์‹ ์ค‘ํ•˜๊ฒŒ ์ง€์–ด์•ผ ํ•œ๋‹ค. ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ๋Š” ๋ฆฌํŒฉํ„ฐ๋ง์˜ ์ผํ™˜์œผ๋กœ, ํ•จ์ˆ˜, ๋ณ€์ˆ˜, ํ•„๋“œ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ์ด๋ฆ„์„ ์ž˜ ์ง€์œผ๋ฉด ์ฝ”๋“œ์˜ ์ดํ•ด์™€ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•ด์ง„๋‹ค.

#### 2. ์ค‘๋ณต ์ฝ”๋“œ (Duplicated Code)

์ฝ”๋“œ ์ค‘๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌํŒฉํ† ๋ง์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ํ†ตํ•ฉํ•˜๊ณ  ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ค‘๋ณต๋œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ๋Š” ํ•จ์ˆ˜ ์ถ”์ถœํ•˜๊ธฐ์™€ ๋ฌธ์žฅ ์Šฌ๋ผ์ด๋“œํ•˜๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋ชจ์•„์„œ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ํŒŒ์ƒ๋œ ์„œ๋ธŒํด๋ž˜์Šค์˜ ์ค‘๋ณต ์ฝ”๋“œ๋Š” ๋ฉ”์„œ๋“œ ์˜ฌ๋ฆฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€๋ชจ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

#### 3. ๊ธด ํ•จ์ˆ˜ (Long Function)

ํ”„๋กœ๊ทธ๋žจ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์งง์€ ํ•จ์ˆ˜๋กœ ๊ตฌ์„ฑ๋œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ , ํ•จ์ˆ˜ ์ด๋ฆ„์„ ์ž˜ ์ง€์–ด์„œ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ํ•จ์ˆ˜ ์ถ”์ถœํ•˜๊ธฐ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ๋ฉ์–ด๋ฆฌ๋ฅผ ์ฐพ์•„๋‚ด๊ณ , ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ž„์‹œ ๋ณ€์ˆ˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ฆฌํŒฉํ„ฐ๋ง ๊ธฐ๋ฒ•์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฃผ์„์ด๋‚˜ ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ๋„ ์ถ”์ถœ ๋Œ€์ƒ์„ ์ฐพ๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค.

#### 4. ๊ธด ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก (Long Parameter List)

ํ•จ์ˆ˜์— ํ•„์š”ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์ด ๊ธธ์–ด์ง€๋ฉด ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง€๋ฏ€๋กœ, ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์งˆ์˜ ํ•จ์ˆ˜๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๊ฐ์ฒด ํ†ต์งธ๋กœ ๋„˜๊ธฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ์ฒด ๋งŒ๋“ค๊ธฐ๋กœ ํ•จ๊ป˜ ์ „๋‹ฌ๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์„ ๋ฌถ๊ณ , ํ”Œ๋ž˜๊ทธ ์ธ์ˆ˜ ์ œ๊ฑฐํ•˜๊ธฐ๋กœ ํ”Œ๋ž˜๊ทธ ์—ญํ• ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์—†์•จ ์ˆ˜ ์žˆ๋‹ค. ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์„ ์ค„์ด๊ณ , ํ•จ์ˆ˜๋“ค์ด ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ํด๋ž˜์Šค์˜ ํ•„๋“œ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

#### 5. ์ „์—ญ ๋ฐ์ดํ„ฐ (Global Data)

์ „์—ญ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ์€ ์ฃผ์˜ํ•ด์•ผ ํ•˜๋ฉฐ, ๋ณ€์ˆ˜ ์บก์Šํ™”ํ•˜๊ธฐ ๋ฆฌํŒฉํ„ฐ๋ง์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์˜ค์—ผ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์ ‘๊ทผ์„ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ์ „์—ญ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€๋ณ€์ผ ๊ฒฝ์šฐ ๋‹ค๋ฃจ๊ธฐ ์–ด๋ ต์ง€๋งŒ, ์ ์€ ์–‘์˜ ์ „์—ญ ๋ฐ์ดํ„ฐ๋ผ๋„ ์บก์Šํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

#### 6. ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ (Mutable Data)

๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ์™€ ๋ฒ„๊ทธ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๋ณต์‚ฌ๋ณธ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ณ€์ˆ˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด์—์„œ๋„ ๋ถˆ๋ณ€์„ฑ์˜ ์žฅ์ ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ณ€์ˆ˜ ์บก์Šํ™”, ๋ณ€์ˆ˜ ์ชผ๊ฐœ๊ธฐ, ๋ฌธ์žฅ ์Šฌ๋ผ์ด๋“œ, ํ•จ์ˆ˜ ์ถ”์ถœํ•˜๊ธฐ, ์งˆ์˜ ํ•จ์ˆ˜์™€ ๋ณ€๊ฒฝ ํ•จ์ˆ˜ ๋ถ„๋ฆฌํ•˜๊ธฐ, ์„ธํ„ฐ ์ œ๊ฑฐํ•˜๊ธฐ, ํŒŒ์ƒ ๋ณ€์ˆ˜๋ฅผ ์งˆ์˜ ํ•จ์ˆ˜๋กœ ๋ฐ”๊พธ๊ธฐ, ํด๋ž˜์Šค๋กœ ๋ฌถ๊ธฐ, ๋ณ€ํ™˜ ํ•จ์ˆ˜๋กœ ๋ฌถ๊ธฐ, ์ฐธ์กฐ๋ฅผ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ๊ธฐ ๋“ฑ์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ˆ˜์ •์— ๋”ฐ๋ฅธ ์œ„ํ—˜์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

#### 7. ๋’ค์—‰ํ‚จ ๋ณ€๊ฒฝ (Divergent Change)

์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์‰ฌ์šด ํ˜•ํƒœ๋กœ ์กฐ์งํ•˜๊ณ , ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ์ง€ํ‚ค๋ฉฐ ๋’ค์—‰ํ‚จ ๋ณ€๊ฒฝ์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ๋งฅ๋ฝ๋ณ„๋กœ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ , ํ•จ์ˆ˜๋ฅผ ์˜ฎ๊ธฐ๊ณ , ํด๋ž˜์Šค๋ฅผ ์ถ”์ถœํ•˜์—ฌ ๋งฅ๋ฝ์„ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

#### 8. ์‚ฐํƒ„์ด ์ˆ˜์ˆ  (Shotgun Surgery)

์‚ฐํƒ„์ด ์ˆ˜์ˆ ์€ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‹œ ์ž์ž˜ํ•œ ์ˆ˜์ •์ด ํ•„์š”ํ•œ ํด๋ž˜์Šค๊ฐ€ ๋งŽ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋ฉฐ, ํ•จ๊ป˜ ๋ณ€๊ฒฝ๋˜๋Š” ๋Œ€์ƒ๋“ค์„ ํ•จ์ˆ˜๋‚˜ ํ•„๋“œ๋กœ ๋ฌถ๊ฑฐ๋‚˜ ์ธ๋ผ์ธ ๋ฆฌํŒฉํ„ฐ๋ง์œผ๋กœ ํ•˜๋‚˜๋กœ ํ•ฉ์น˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ž‘์€ ํ•จ์ˆ˜์™€ ํด๋ž˜์Šค์— ์ง‘์ค‘ํ•˜๋˜, ์ฝ”๋“œ ์žฌ๊ตฌ์„ฑ ์ค‘์—๋Š” ํฐ ๋ฉ์–ด๋ฆฌ๋กœ ๋ฌถ์—ฌ๋„ ๊ดœ์ฐฎ๋‹ค.

#### 9. ๊ธฐ๋Šฅ ํŽธ์•  (Feature Envy)

ํ”„๋กœ๊ทธ๋žจ์„ ๋ชจ๋“ˆํ™”ํ•  ๋•Œ๋Š” ์ƒํ˜ธ์ž‘์šฉ์„ ์˜์—ญ ๋‚ด์—์„œ ์ตœ๋Œ€ํ™”ํ•˜๊ณ  ์˜์—ญ ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ๊ธฐ๋Šฅ ํŽธ์• ๋Š” ๋‹ค๋ฅธ ๋ชจ๋“ˆ๊ณผ์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ๋งŽ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜๋ฅผ ์˜ฎ๊ธฐ๊ฑฐ๋‚˜ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ๋ณต์žกํ•œ ํŒจํ„ด๊ณผ ๋””์ž์ธ ํŒจํ„ด์„ ํ™œ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ ๋ƒ„์ƒˆ๋ฅผ ์—†์•จ ์ˆ˜ ์žˆ๋‹ค.

#### 10. ๋ฐ์ดํ„ฐ ๋ญ‰์น˜ (Data Clumps)

๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ๋“ค์„ ํ•จ๊ป˜ ๋ฌถ์–ด์„œ ํด๋ž˜์Šค๋กœ ์ถ”์ถœํ•˜๊ณ , ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ์ฒด ๋งŒ๋“ค๊ธฐ๋‚˜ ๊ฐ์ฒด ํ†ต์งธ๋กœ ๋„˜๊ธฐ๊ธฐ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋ญ‰์น˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋ญ‰์น˜๋ฅผ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค๋ฉด ์ค‘๋ณต์„ ์—†์• ๊ณ  ๊ฐœ๋ฐœ์„ ๊ฐ€์†ํ•  ์ˆ˜ ์žˆ๋‹ค.

#### 11. ๊ธฐ๋ณธํ˜• ์ง‘์ฐฉ (Primitive Obsession)

๊ธฐ๋ณธํ˜•์„ ๊ฐ์ฒด๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์˜๋ฏธ ์žˆ๋Š” ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์ฝ”๋“œ๋ฅผ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธํ˜•์œผ๋กœ๋งŒ ํ‘œํ˜„๋œ ์ฝ”๋“œ๋ฅผ ๊ฐ์ฒด ์ง€ํ–ฅ์ ์œผ๋กœ ๋ฆฌํŒฉํ„ฐ๋งํ•˜๊ณ , ๊ธฐ๋ณธํ˜•์„ ๊ฐ์ฒด๋กœ ๋Œ€์ฒดํ•จ์œผ๋กœ์จ ์กฐ๊ฑด๋ถ€ ๋™์ž‘์„ ๋‹คํ˜•์„ฑ์œผ๋กœ ๋ฐ”๊พธ๊ธฐ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž์ฃผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธํ˜• ๊ทธ๋ฃน๋„ ํด๋ž˜์Šค ์ถ”์ถœํ•˜๊ธฐ์™€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ์ฒด ๋งŒ๋“ค๊ธฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

#### 12. ๋ฐ˜๋ณต๋˜๋Š” switch๋ฌธ (Repeated Switches)

์ค‘๋ณต๋œ switch๋ฌธ์€ ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๋ฉฐ, ์ƒˆ๋กœ์šด ์กฐ๊ฑด์ด ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค ์—ฌ๋Ÿฌ switch๋ฌธ์„ ํ•จ๊ป˜ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ๋‹คํ˜•์„ฑ์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต๋œ switch๋ฌธ์„ ์ œ๊ฑฐํ•˜๊ณ , ์ฝ”๋“œ๋ฅผ ๋” ํ˜„๋Œ€์ ์ธ ์Šคํƒ€์ผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

#### 13. ๋ฐ˜๋ณต๋ฌธ(Loops)

๋ฐ˜๋ณต๋ฌธ์€ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐœ๋…์„ ํ™œ์šฉํ•˜์—ฌ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค. ์ผ๊ธ‰ ํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•˜๋Š” ์–ธ์–ด์—์„œ๋Š” ํ•„ํ„ฐ๋‚˜ ๋งต๊ณผ ๊ฐ™์€ ํŒŒ์ดํ”„๋ผ์ธ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

#### 14. ์„ฑ์˜ ์—†๋Š” ์š”์†Œ (Lazy Element)

๋ถˆํ•„์š”ํ•œ ํ•จ์ˆ˜๋‚˜ ํด๋ž˜์Šค๋Š” ์ œ๊ฑฐํ•˜๊ณ , ์ธ๋ผ์ธํ•˜๊ธฐ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ๋‹จ์ˆœํ™”ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์ƒ์†์„ ์‚ฌ์šฉํ•œ ํด๋ž˜์Šค์˜ ์—ญํ• ์ด ์ค„์–ด๋“ค์—ˆ์„ ๋•Œ๋Š” ๊ณ„์ธต ํ•ฉ์น˜๊ธฐ๋ฅผ ์ ์šฉํ•˜์—ฌ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

#### 15. ์ถ”์ธก์„ฑ ์ผ๋ฐ˜ํ™” (Speculative Generality)

๋ฏธ๋ž˜์— ํ•„์š”ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ํ˜„์žฌ์—๋Š” ๋ถˆํ•„์š”ํ•œ ๋‚ญ๋น„์ผ ์ˆ˜ ์žˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ ์ถ”์ƒ ํด๋ž˜์Šค๋‚˜ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋Š” ์‚ญ์ œํ•˜๊ณ , ๊ฐ„๋‹จํ•˜๊ฒŒ ์œ ์ง€๋ณด์ˆ˜ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋กœ ์ •๋ฆฌํ•œ๋‹ค.

#### 16. ์ž„์‹œ ํ•„๋“œ (Temporary Field)

ํŠน์ • ์ƒํ™ฉ์—์„œ๋งŒ ๊ฐ’์ด ์„ค์ •๋˜๋Š” ํ•„๋“œ๋Š” ํด๋ž˜์Šค ์ถ”์ถœํ•˜๊ธฐ๋ฅผ ํ†ตํ•ด ์ ์ ˆํ•œ ํด๋ž˜์Šค๋กœ ์ด๋™์‹œํ‚ค๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ผ€์ด์Šค ์ถ”๊ฐ€ํ•˜๊ธฐ๋กœ ๋Œ€์•ˆ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•œ ํ›„์— ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

#### 17. ๋ฉ”์‹œ์ง€ ์ฒด์ธ (Message Chains)

๋ฉ”์‹œ์ง€ ์ฒด์ธ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•œ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์–ป์€ ๋’ค ๊ณ„์†ํ•ด์„œ ๋‹ค๋ฅธ ๊ฐ์ฒด์— ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด๋Š” ๋‚ด๋น„๊ฒŒ์ด์…˜ ๊ตฌ์กฐ์— ์ข…์†๋˜์–ด ์žˆ์–ด์„œ ์ค‘๊ฐ„ ๊ฐ์ฒด๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๋„ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์œ„์ž„ ์ˆจ๊ธฐ๊ธฐ๋ฅผ ํ™œ์šฉํ•œ๋‹ค.

- ๋ฆฌํŒฉํ„ฐ๋ง ๋ฐฉ๋ฒ•:

1. **์œ„์ž„ ์ˆจ๊ธฐ๊ธฐ(Hide Delegate):** ์ค‘๊ฐ„ ๊ฐ์ฒด์˜ ๋ฉ”์‹œ์ง€ ์ฒด์ธ์„ ์ˆจ๊ธฐ๊ธฐ ์œ„ํ•ด ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ค‘๊ฐ„ ๊ฐ์ฒด์— ์ถ”๊ฐ€ํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๋Š” ์ด ๋ฉ”์„œ๋“œ๋งŒ ํ˜ธ์ถœํ•˜๋ฉด ๋˜๋ฉฐ, ์ค‘๊ฐ„ ๊ฐ์ฒด์˜ ๋‚ด๋น„๊ฒŒ์ด์…˜ ๊ตฌ์กฐ๋Š” ๊ฐ์ถฐ์ง„๋‹ค.
2. **ํ•จ์ˆ˜ ์ถ”์ถœํ•˜๊ธฐ(Extract Function):** ๋ฉ”์‹œ์ง€ ์ฒด์ธ์˜ ๊ฒฐ๊ณผ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋”ฐ๋กœ ํ•จ์ˆ˜๋กœ ์ถ”์ถœํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์ค‘๊ฐ„ ๊ฐ์ฒด์˜ ๋‚ด๋น„๊ฒŒ์ด์…˜์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.
3. **ํ•จ์ˆ˜ ์˜ฎ๊ธฐ๊ธฐ(Move Function):** ๋ฉ”์‹œ์ง€ ์ฒด์ธ์„ ์ˆจ๊ธฐ๊ธฐ ์œ„ํ•ด ์ถ”์ถœํ•œ ํ•จ์ˆ˜๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜๋กœ ์ด๋™์‹œํ‚จ๋‹ค.

๋ฉ”์‹œ์ง€ ์ฒด์ธ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ์ค‘๊ฐ„ ๊ฐ์ฒด์˜ ๋‚ด๋น„๊ฒŒ์ด์…˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ”๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๊ฐ€ ์ค‘๊ฐ„ ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ์— ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ๋ฆฌํŒฉํ„ฐ๋งํ•˜์—ฌ ์œ ์—ฐํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

```typescript
// ์˜ฎ๊ธด์ด ์•ž์˜ ๋ฌธ๋‹จ์€ 7.7 ์œ„์ž„ ์ˆจ๊ธฐ๊ธฐ์„ ์ฝ๊ณ  ์˜จ ํ›„๋ผ๋„ ํ•œ ๋ฒˆ์— ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šธ ๊ฒƒ ๊ฐ™์•„์„œ
// ์˜ˆ์‹œ๋“ค ์ค€๋น„ํ–ˆ๋‹ค. ์šฐ์„  ๋‹ค์Œ ์ฝ”๋“œ๊ฐ€ ๋ฉ”์‹œ์ง€ ์ฒด์ธ์˜ ์ „ํ˜•์ ์ธ ์˜ˆ๋‹ค.

managerName = aPerson.department.manager.name;

// '์ฒด์ธ์„ ๊ตฌ์„ฑํ•˜๋Š”๋ชจ๋“  ๊ฐ์ฒด์— ์œ„์ž„ ์ˆจ๊ธฐ๊ธฐ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค'๊ณ  ํ•จ์€ ๋ถ€์„œ์žฅ ์ด๋ฆ„์„ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š”
// ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ๋žŒ ํด๋ž˜์Šค์— ์ถ”๊ธฐํ•  ์ˆ˜๋„ ์žˆ๊ณ  ๋ถ€์„œ ํด๋ž˜์Šค์— ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค. ํ˜น์€
// ๋ถ€์„œ์žฅ์„ ์–ป๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ๋žŒ ํด๋ž˜์Šค์— ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

managerName = aPerson.department.managerName; // ๊ด€๋ฆฌ์ž(manager)์˜ ์กด์žฌ๋ฅผ ์ˆจ๊น€
managerNane = aPerson.manager.name; // ๋ถ€์„œ ๊ฐ์ฒด (department)์˜ ์กด์žฌ๋ฅผ ์ˆจ๊น€
managerName = aPerson.managerName; // ๋ถ€์„œ ๊ฐ์ฒด์™€ ๊ด€๋ฆฌ์ž ๊ฐ์ฒด ๋ชจ๋‘์˜ ์กด์žฌ๋ฅผ ์ˆจ๊น€

// ์ด ์ฒด์ธ์˜ ์ตœ์ข… ๊ฒฐ๊ณผ ๊ฐ์ฒด๋Š” name์ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ถ€์„œ์žฅ์˜ ์ด๋ฆ„์ด๋‹ค.
// ์ด ๊ฐ์ฒด๊ฐ€ ๋‹ค์Œ์ฒ˜๋Ÿผ ์“ฐ์ธ๋‹ค๊ณ  ํ•ด๋ณด์ž.

managerName = aPerson.department.manager.name;
report = "${managerName}๊ป˜ ${aPerson.name} ๋‹˜์˜ ์ž‘์—… ๋กœ๊ทธ...";
console.log(report);

// ์—ฌ๊ธฐ์„œ ๋ณด๊ณ ์„œ ์ƒ์„ฑ ๋กœ์ง์„ ํ•จ์ˆ˜๋กœ ์ถ”์ถœํ•œ ๋‹ค์Œ ์ ๋‹นํ•œ ๋ชจ๋“ˆ๋กœ ์˜ฎ๊ธฐ๋ฉด ์ฒด์ธ์˜ ์กด์žฌ๊ฐ€ ๊ฐ์ถฐ์ง„๋‹ค.

console.log(reportAutoGenerator.report(aPerson));

// ๋งˆ์ง€๋ง‰์œผ๋กœ ์ฒด์ธ์˜ ์ค‘๊ฐ„์ธ ๋ถ€์„œ ์ •๋ณด๋ฅผ ์–ป์–ด ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์ˆ˜์˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ถ€์„œ์žฅ ์ด๋ฆ„๋„ ํ•จ๊ป˜
// ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋ถ€์„œ ํด๋ž˜์Šค์— managername() ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ฒด์ธ์„ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.
```

#### 18. ์ค‘๊ฐœ์ž (Middle Man)

๊ฐ์ฒด์˜ ์บก์Šํ™”๋Š” ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์„ธ๋ถ€์‚ฌํ•ญ์„ ์ˆจ๊ธฐ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, ์œ„์ž„์ด ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค. ์ค‘๊ฐœ์ž ์ œ๊ฑฐํ•˜๊ธฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์œ„์ž„ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ํ˜ธ์ถœํ•˜๋Š” ์ชฝ์œผ๋กœ ์ธ๋ผ์ธํ•˜์ž.

#### 19. ๋‚ด๋ถ€์ž ๊ฑฐ๋ž˜ (Insider Trading)

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋Š” ๋ชจ๋“ˆ ์‚ฌ์ด์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜ ์˜ฎ๊ธฐ๊ธฐ, ํ•„๋“œ ์˜ฎ๊ธฐ๊ธฐ, ์œ„์ž„ ์ˆจ๊ธฐ๊ธฐ๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ, ์ƒ์† ๊ตฌ์กฐ์—์„œ๋Š” ์„œ๋ธŒํด๋ž˜์Šค๋ฅผ ์œ„์ž„์œผ๋กœ ๋ฐ”๊พธ๊ธฐ๋‚˜ ์Šˆํผํด๋ž˜์Šค๋ฅผ ์œ„์ž„์œผ๋กœ ๋ฐ”๊พธ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐํ•ฉ๋„๋ฅผ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•œ๋‹ค.

#### 20. ๊ฑฐ๋Œ€ํ•œ ํด๋ž˜์Šค (Large Class)

ํด๋ž˜์Šค๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์ผ์„ ํ•˜๊ฑฐ๋‚˜ ํ•„๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์„ ๋•Œ๋Š” ํด๋ž˜์Šค ์ถ”์ถœํ•˜๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ์ฝ”๋“œ๋Ÿ‰์ด ๋งŽ์€ ํด๋ž˜์Šค์—์„œ๋Š” ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์€ ๋ฉ”์„œ๋“œ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฑฐ๋Œ€ ํด๋ž˜์Šค์˜ ํŠน์ • ๊ธฐ๋Šฅ ๊ทธ๋ฃน๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ๊ธฐ๋Šฅ ๊ทธ๋ฃน์„ ๊ฐœ๋ณ„ ํด๋ž˜์Šค๋กœ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

#### 21. ์„œ๋กœ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋Œ€์•ˆ ํด๋ž˜์Šค๋“ค (Alternative Classes with Different Interfaces)

ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์˜ ํฐ ์žฅ์ ์€ ํ•„์š”์— ๋”ฐ๋ผ ์–ธ์ œ๋“  ๋‹ค๋ฅธ ํด๋ž˜์Šค๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋‹จ, ๊ต์ฒดํ•˜๋ ค๋ฉด ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜ ์„ ์–ธ ๋ฐ”๊พธ๊ธฐ๋กœ ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ์ผ์น˜์‹œํ‚จ๋‹ค. ๋•Œ๋กœ๋Š” ์ด๊ฒƒ๋งŒ์œผ๋กœ ๋ถ€์กฑํ•œ๋ฐ, ์ด๋Ÿด ๋•Œ๋Š” ํ•จ์ˆ˜ ์˜ฎ๊ธฐ๊ธฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ฐ™์•„์งˆ ๋•Œ๊นŒ์ง€ ํ•„์š”ํ•œ ๋™์ž‘๋“ค์„ ํด๋ž˜์Šค ์•ˆ์œผ๋กœ ๋ฐ€์–ด ๋„ฃ๋Š”๋‹ค. ๊ทธ๋ฆฌ๋‹ค ๋Œ€์•ˆ ํด๋ž˜์Šค๋“ค ์‚ฌ์ด์— ์ค‘๋ณต ์ฝ”๋“œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์Šˆํผํด๋ž˜์Šค ์ถ”์ถœํ•˜๊ธฐ๋ฅผ ์ ์šฉํ• ์ง€ ๊ณ ๋ คํ•ด๋ณธ๋‹ค.

#### 22. ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค (Data Class)

๋ฐ์ดํ„ฐ ํด๋ž˜์Šค๋Š” ๋ฐ์ดํ„ฐ ํ•„๋“œ์™€ ๊ฒŒํ„ฐ/์„ธํ„ฐ ๋ฉ”์„œ๋“œ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ํด๋ž˜์Šค๋ฅผ ๋งํ•˜๋ฉฐ, public ํ•„๋“œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๋ ˆ์ฝ”๋“œ ์บก์Šํ™”๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค์˜ ๊ฒŒํ„ฐ๋‚˜ ์„ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ฐพ์•„์„œ ํ•จ์ˆ˜ ์˜ฎ๊ธฐ๊ธฐ๋ฅผ ๊ณ ๋ คํ•˜๊ณ , ํ•„์š”ํ•œ ๋™์ž‘์ด ์—‰๋šฑํ•œ ๊ณณ์— ์ •์˜๋˜์–ด ์žˆ๋‹ค๋ฉด ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๋ฅผ ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ๊ฐœ์„ ์— ๋„์›€์ด ๋œ๋‹ค.

#### 23. ์ƒ์†ํฌ๊ธฐ (Refused Bequest)

์„œ๋ธŒํด๋ž˜์Šค๊ฐ€ ๋ถ€๋ชจ์˜ ์ผ๋ถ€ ๋™์ž‘์€ ํ•„์š”ํ•˜์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋”ฐ๋ฅด์ง€ ์•Š์„ ๋•Œ, ์ƒ์†์„ ํฌ๊ธฐํ•˜๊ณ  ์œ„์ž„์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ๋™์ž‘์„ ์žฌํ™œ์šฉํ•˜๋ฉด์„œ ์ƒ์† ๋ฉ”์ปค๋‹ˆ์ฆ˜์—์„œ ๋ฒ—์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค.

#### 24. ์ฃผ์„ (Comments)

ํŠน์ • ์ฝ”๋“œ ๋ธ”๋ก์ด ํ•˜๋Š” ์ผ์— ์ฃผ์„์„ ๋‚จ๊ธฐ๊ณ  ์‹ถ๋‹ค๋ฉด ํ•จ์ˆ˜ ์ถ”์ถœํ•˜๊ธฐ๋ฅผ ์ ์šฉํ•ด๋ณธ๋‹ค. ์ด๋ฏธ ์ถ”์ถœ๋˜์–ด ์žˆ๋Š” ํ•จ์ˆ˜์ž„์—๋„ ์—ฌ์ „ํžˆ ์„ค๋ช…์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ํ•จ์ˆ˜ ์„ ์–ธ ๋ฐ”๊พธ๊ธฐ๋กœ ํ•จ์ˆ˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ”๋ณธ๋‹ค. ์‹œ์Šคํ…œ์ด ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ์„ ํ–‰์กฐ๊ฑด์„ ๋ช…์‹œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด์„œ์…˜ ์ถ”๊ฐ€ํ•˜๊ธฐ๊ฐ€ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋‹ค.

> ์ฃผ์„์„ ๋‚จ๊ฒจ์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค๋ฉด, ๊ฐ€์žฅ ๋ฉด์ € ์ฃผ์„์ด ํ•„์š” ์—†๋Š” ์ฝ”๋“œ๋กœ ๋ฆฌํŒฉํ„ฐ๋งํ•ด๋ณธ๋‹ค.

๋ญ˜ ํ• ์ง€ ๋ชจ๋ฅผ ๋•Œ๋ผ๋ฉด ์ฃผ์„์„ ๋‹ฌ์•„๋‘๋ฉด ์ข‹๋‹ค. ํ˜„์žฌ ์ง„ํ–‰ ์ƒํ•ญ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ™•์‹คํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„์— ์ฃผ์„์— ๋‚จ๊ธด๋‹ค. ์ฝ”๋“œ๋ฅผ ์ง€๊ธˆ์ฒ˜๋Ÿผ ์ž‘์„ฑํ•œ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์šฉ๋„๋กœ ๋‹ฌ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋Ÿฐ ์ •๋ณด๋Š” ๋‚˜์ค‘์— ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•  ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ. ํŠนํžˆ ๊ฑด๋ง์ฆ์ด ์‹ฌํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ๋„์›€๋  ๊ฒƒ์ด๋‹ค.

0 comments on commit ee940c6

Please sign in to comment.