๐Ÿธminzzi
Minzzi์•ผ
๐Ÿธminzzi
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (132)
    • ์˜ค๋ฅ˜ํ•ด๊ฒฐ (14)
    • FE (36)
      • Next.js (17)
      • React (4)
      • React Native (0)
      • TypeScript (1)
      • JavaScript (14)
    • BE (0)
      • Nest.js (0)
    • ๋ฐ๋ธŒ์ฝ”์Šค (7)
    • ์›น ํ”„๋กœ์ ํŠธ (5)
    • CS (28)
      • Algorithm (5)
      • Python (4)
      • C++ (2)
      • Operating System (4)
      • Computer Networking (3)
      • Data Structure (1)
      • Machine Learning (3)
      • Tip (6)
    • Github (4)
    • Flutter (3)
      • ํ”„๋กœ์ ํŠธ (3)
    • Private (3)
      • ํšŒ๊ณ  (7)
      • ๋ฉด์ ‘ (17)
    • ๊ฐœ๋ฐœ๋„์„œ (7)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ๋ ‰์‹œ์ปฌ
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • reflow
  • ์›์‹œํƒ€์ž…
  • ์‹คํ–‰์ปจํ…์ŠคํŠธ
  • ํž™์˜์—ญ
  • SSR
  • ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
  • layout shift
  • ์‹คํ–‰์ปจํƒ์ŠคํŠธ
  • ์˜ค๋ธ”์™„
  • next.js
  • ํ˜ธ์ด์ŠคํŒ…
  • ์ด๋ฒคํŠธ๋ฃจํ”„
  • ์ฝœ์Šคํƒ
  • ์ด๋ฏธ์ง€ ์ตœ์ ํ™”
  • ๋ชจ๋˜๋ฆฌ์•กํŠธ๋”ฅ๋‹ค์ด๋ธŒ
  • ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…
  • react
  • ๋ฉด์ ‘

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
๐Ÿธminzzi

Minzzi์•ผ

๊ฐœ๋ฐœ๋„์„œ

[๋ฆฌํŒฉํ† ๋ง 2ํŒ] action point(ch3)

2025. 4. 28. 21:06

Ch3. ์ฝ”๋“œ์—์„œ ๋‚˜๋Š” ์•…์ทจ

๋ฆฌํŒฉํ„ฐ๋ง์ด ํ•„์š”ํ•œ, ๋•Œ๋กœ๋Š” ์•„์ฃผ ์ ˆ์‹คํ•œ ์ฝ”๋“œ๋“ค์— ์ผ์ •ํ•œ ํŒจํ„ด์ด ์žˆ๋‹ค
1. ๊ธฐ์ดํ•œ ์ด๋ฆ„(Mysterious Name)
- ๋งˆ๋•…ํ•œ ์ด๋ฆ„์ด ๋– ์˜ค๋ฅด์ง€ ์•Š์œผ๋ฉด ์„ค๊ณ„์— ๋” ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์ˆจ์–ด์žˆ์„ ์ˆ˜ ์žˆ๋‹ค


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


3. ๊ธด ํ•จ์ˆ˜(Long Function)
- ๊ฐ„์ ‘ ํ˜ธ์ถœ์˜ ํšจ๊ณผ, ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๊ณต์œ ํ•˜๊ณ , ์„ ํƒํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค๋Š” ์žฅ์ ์€ ํ•จ์ˆ˜๋ฅผ ์งง๊ฒŒ ๊ตฌ์„ฑํ•  ๋•Œ ๋‚˜์˜จ๋‹ค
- ์ฃผ์„์„ ๋‹ฌ์•„์•ผ ํ•  ๋งŒํ•œ ๋ถ€๋ถ„์€ ๋ฌด์กฐ๊ฑด ํ•จ์ˆ˜๋กœ ๋งŒ๋“ ๋‹ค. ํ•จ์ˆ˜ ์ด๋ฆ„์€ ๋™์ž‘ ๋ฐฉ์‹์ด ์•„๋‹Œ ์˜๋„๊ฐ€ ๋“œ๋Ÿฌ๋‚˜๊ฒŒ ์ง“๋Š”๋‹ค
- ์กฐ๊ฑด๋ฌธ์ด๋‚˜ ๋ฐ˜๋ณต๋ฌธ๋„ ์ถ”์ถœ ๋Œ€์ƒ์˜ ์‹ค๋งˆ๋ฆฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค


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


5. ์ „์—ญ ๋ฐ์ดํ„ฐ(Global Data)
- ์ „์—ญ ๋ฐ์ดํ„ฐ๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค ์–ด๋””์—์„œ๋“  ๊ฑด๋“œ๋ฆด ์ˆ˜ ์žˆ๊ณ  ๊ฐ’์„ ๋ˆ„๊ฐ€ ๋ฐ”๊ฟจ๋Š”์ง€ ์ฐพ์•„๋‚ผ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์—†๋‹ค.
- ์ €์ž๋Š” ์ „์—ญ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์ฃผ ์กฐ๊ธˆ๋งŒ ์žˆ๋”๋ผ๊ณ  ํ•จ์ˆ˜๋กœ ๊ฐ์‹ธ ์บก์Аํ™”ํ•˜๋Š” ํŽธ์ด๋‹ค.


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


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

- ๋’ค์—‰ํ‚จ ๋ณ€๊ฒฝ์€ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP)์ด ์ œ๋Œ€๋กœ ์ง€์ผœ์ง€์ง€ ์•Š์„ ๋•Œ ๋‚˜ํƒ€๋‚œ๋‹ค.


8. ์‚ฐํƒ„์ด ์ˆ˜์ˆ (Shotgun Surgery)
- ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค ์ž์ž˜ํ•˜๊ฒŒ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ ๋งŽ์„ ๋•Œ ์ผ์–ด๋‚œ๋‹ค.
- ๋ณ€๊ฒฝํ•  ๋ถ€๋ถ„์ด ์ฝ”๋“œ ์ „๋ฐ˜์— ํผ์ ธ ์žˆ๋‹ค๋ฉด ์ฐพ๊ธฐ๋„ ์–ด๋ ต๊ณ  ๊ผญ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๊ณณ์„ ์ง€๋‚˜์น˜๊ธฐ ์‰ฝ๋‹ค


9. ๊ธฐ๋Šฅ ํŽธ์• (Feature Envy)
- ๊ธฐ๋Šฅ ํŽธ์• ๋Š” ํ”ํžˆ ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ์ž๊ธฐ๊ฐ€ ์†ํ•œ ๋ชจ๋“ˆ์˜ ํ•จ์ˆ˜๋‚˜ ๋ฐ์ดํ„ฐ๋ณด๋‹ค ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ ํ•จ์ˆ˜๋‚˜ ๋ฐ์ดํ„ฐ์™€ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ผ์ด ๋” ๋งŽ์„ ๋•Œ ์ผ์–ด๋‚œ๋‹ค.


10. ๋ฐ์ดํ„ฐ ๋ญ‰์น˜(Data Clumps)
- ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ ์„œ๋„ˆ ๊ฐœ๊ฐ€ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ํ•ญ์ƒ ํ•จ๊ป˜ ๋ญ‰์ณ ๋‹ค๋‹๋•Œ
- ๋ฐ์ดํ„ฐ ๋ญ‰์น˜์ธ์ง€ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ’ ํ•˜๋‚˜๋ฅผ ์‚ญ์ œํ•ด๋ณด๋ผ -> ๊ทธ๋žฌ์„ ๋•Œ ๋‚˜๋จธ์ง€ ๋ฐ์ดํ„ฐ๋งŒ์œผ๋กœ๋Š” ์˜๋ฏธ๊ฐ€ ์—†๋‹ค๋ฉด ๊ฐ์ฒด๋กœ ํ™˜์ƒํ•˜๊ธธ ๊ฐˆ๋งํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ญ‰์น˜์ด๋‹ค.


11. ๊ธฐ๋ณธํ˜• ์ง‘์ฐฉ(Primitive Obsession)
- ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š” ์ฝ”๋“œ์—์„œ ํŠนํžˆ ํ”ํ•˜๋‹ค.
-> (๊ธฐ๋ณธํ˜•์„ ๊ฐ์ฒด๋กœ ๋ฐ”๊พธ๊ธฐ 7.3์ ˆ ์ž˜ ์ฝ์–ด๋ณด์ž)


12. ๋ฐ˜๋ณต๋˜๋Š” switch๋ฌธ(Repeated Switches)
- ๋ฐ˜๋ณต๋˜๋Š” switch๋ฌธ์ด ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์ด์œ ๋Š” ์กฐ๊ฑด์ ˆ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค๋ฅธ switch๋ฌธ๋“ค๋„ ๋ชจ๋‘ ์ฐพ์•„์„œ ํ•จ๊ป˜ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ


13. ๋ฐ˜๋ณต๋ฌธ(Loops)
- ๋ฐ˜๋ณต๋ฌธ๋ณด๋‹ค ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค


14. ์„ฑ์˜ ์—†๋Š” ์š”์†Œ(Lazy Element)
- ํ”„๋กœ๊ทธ๋žจ ์š”์†Œ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ


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

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

 

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

- ํŠน์ • ์ƒํ™ฉ์—์„œ๋งŒ ๊ฐ’์ด ์„ค์ •๋˜๋Š” ํ•„๋“œ๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค

 

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

- ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•œ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์–ป์€ ๋’ค ๋ฐฉ๊ธˆ ์–ป์€ ๊ฐ์ฒด์— ๋˜ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์š”์ฒญํ•˜๋Š” ์‹์œผ๋กœ, ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์š”์ฒญํ•˜๋Š” ์ž‘์—…์ด ์—ฐ์‡„์ ์œผ๋กœ ์ด์–ด์ง€๋Š” ์ฝ”๋“œ

- getSomething() ๊ฐ™์€ ๊ฒŒํ„ฐ๊ฐ€ ๊ผฌ๋ฆฌ์— ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ๊ณ  ์ด์–ด์ง€๊ฑฐ๋‚˜ ์ž„์‹œ ๋ณ€์ˆ˜๋“ค์ด ์ค„์ค„์ด ๋‚˜์—ด๋˜๋Š” ์ฝ”๋“œ

 

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

- ํด๋ž˜์Šค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ค‘ ์ ˆ๋ฐ˜์ด ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ๊ตฌํ˜„์„ ์œ„์ž„ํ•˜๊ณ  ์žˆ์„ ๋•Œ

 

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

- ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์ด ๊ฐ™์€ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๊ณต์œ 

- ์ƒ์† ๊ตฌ์กฐ์—์„œ ๋ถ€๋ชจ ์ž์‹ ์‚ฌ์ด์— ๊ฒฐํƒ์ด ์ƒ๊ธธ๋•Œ

 

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

- ํ•œ ํด๋ž˜์Šค๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์„ ์ผ์„ ํ•˜๋ ค๋‹ค ๋ณด๋‹ˆ ํ•„๋“œ ์ˆ˜๊ฐ€ ๋งŽ์•„์ ธ ์ค‘๋ณต ์ฝ”๋“œ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ

- ์ฝ”๋“œ๋Ÿ‰ใ…‡์ด ๋„ˆ๋ฌด ๋งŽ์€ ํด๋ž˜์Šค ์—ญ์‹œ ์ค‘๋ณต ์ฝ”๋“œ์™€ ํ˜ผ๋™์„ ์ผ์œผํ‚ฌ ์—ฌ์ง€๊ฐ€ ํฌ๋‹ค.

 

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

- ํด๋ž˜์Šค๋Š” ์–ธ์ œ๋“  ๋‹ค๋ฅธ ํด๋ž˜์Šค๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ต์ฒดํ•˜๋ ค๋ฉด ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. ์ด๋•Œ ๋ฆฌํŽ™ํ„ฐ๋ง์ด ํ•„์š”ํ•˜๋‹ค.

 

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

- ๋ฐ์ดํ„ฐ ํ•„๋“œ์™€ ๊ฒŒํ„ฐ/์„ธํ„ฐ ๋ฉ”์„œ๋“œ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค์— public ํ•„๋“œ๊ฐ€ ์žˆ์„ ๋•Œ ๋ ˆ์ฝ”๋“œ ์บก์Аํ™”ํ•˜๊ธฐ๋กœ ์ˆจ๊ฒจ์•ผ ํ•œ๋‹ค.

- ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค์˜ ๊ฒŒํ„ฐ๋‚˜ ์„ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ฐพ์•„์„œ ํ•จ์ˆ˜์˜ฎ๊ธฐ๊ธฐ๋กœ ๊ทธ ๋ฉ”์„œ๋“œ๋ฅผ ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ด์•ผํ•œ๋‹ค.

 

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

- ์„œ๋ธŒํด๋ž˜์Šค๊ฐ€ ๋ถ€๋ชจ์˜ ๋™์ž‘์€ ํ•„์š”๋กœํ•˜์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋”ฐ๋ฅด๊ณ  ์‹ถ์ง€ ์•Š์„ ๋•Œ

 

24. ์ฃผ์„(Comments)

- ์ฃผ์„์„ ๋‹ฌ๋ฉด ์•ˆ๋˜๋Š” ๊ฑด ์•„๋‹ˆ์ง€๋งŒ ์ฃผ์„์ด ์žฅํ™ฉํ•˜๊ฒŒ ๋‹ฌ๋ฆฐ ์›์ธ์ด ์ฝ”๋“œ๋ฅผ ์ž˜๋ชป ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒฝ์šฐ๊ฐ€ ์˜์™ธ๋กœ ๋งŽ๋‹ค.

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

 

- ๋ญ˜ ํ•  ์ง€ ๋ชจ๋ฅผ ๋•Œ, ํ™•์‹คํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„, ์ฝ”๋“œ๋ฅผ ์ง€๊ธˆ์ฒ˜๋Ÿผ ์ž‘์„ฑํ•œ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์šฉ๋„๋กœ ์ฃผ์„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์ค‘์— ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ์ข‹๋‹ค.

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๊ฐœ๋ฐœ๋„์„œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฆฌํŒฉํ„ฐ๋ง 2ํŒ] ๋ฆฌํŒฉํ„ฐ๋ง ์นดํƒˆ๋กœ๊ทธ ๋ณด๋Š” ๋ฒ•(ch5)  (0) 2025.05.01
[๋ฆฌํŒฉํ„ฐ๋ง 2ํŒ] action point(ch4)  (0) 2025.04.30
[ํ•จ๊ป˜์ž๋ผ๊ธฐ] action point  (2) 2025.04.30
[๋ฆฌํŒฉํ„ฐ๋ง 2ํŒ] action point(ch2)  (2) 2025.04.27
[๋ฆฌํŒฉํ„ฐ๋ง 2ํŒ] action point(ch1)  (0) 2025.04.26
    '๊ฐœ๋ฐœ๋„์„œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [๋ฆฌํŒฉํ„ฐ๋ง 2ํŒ] action point(ch4)
    • [ํ•จ๊ป˜์ž๋ผ๊ธฐ] action point
    • [๋ฆฌํŒฉํ„ฐ๋ง 2ํŒ] action point(ch2)
    • [๋ฆฌํŒฉํ„ฐ๋ง 2ํŒ] action point(ch1)
    ๐Ÿธminzzi
    ๐Ÿธminzzi

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”