πŸ“† λ‚ μ§œ

2023/12/12(ν™”)

πŸ“š 챕터

ν•¨μˆ˜λ₯Ό λ§Œλ“€ λ•Œ μ£Όμ˜ν•΄μ•Ό ν•  사항


πŸ‘¨πŸ»β€πŸ’» ν•™μŠ΅ λ‚΄μš©

🎯 ν•¨μˆ˜μ˜ λΆ€μˆ˜ 효과λ₯Ό μ΅œλŒ€ν•œ μ–΅μ œν•˜μž

ν•¨μˆ˜μ˜ λΆ€μˆ˜ 효과(side-effect)λž€ ν•¨μˆ˜ λ‚΄μ˜ μž‘λ™μœΌλ‘œ 인해 ν•¨μˆ˜κ°€ μ•„λ‹Œ ν•¨μˆ˜ 외뢀에 영ν–₯을 λΌμΉ˜λŠ” 것을 μ˜λ―Έν•œλ‹€.μ΄λŸ¬ν•œ λΆ€μˆ˜ νš¨κ³Όκ°€ μ—†λŠ” ν•¨μˆ˜λ₯Ό 순수 ν•¨μˆ˜λΌν•˜κ³ , λΆ€μˆ˜ νš¨κ³Όκ°€ μ‘΄μž¬ν•˜λŠ” ν•¨μˆ˜λ₯Ό λΉ„μˆœμˆ˜ ν•¨μˆ˜λΌκ³ ν•œλ‹€.
순수 ν•¨μˆ˜ : λΆ€μˆ˜νš¨κ³Όκ°€ μ—†κ³  , μ–Έμ œ μ–΄λ””μ„œλ‚˜ μ–΄λ– ν•œ μƒν™©μ—μ„œλ“  λ™μΌν•œ 인수λ₯Ό λ°›μœΌλ©΄ λ™μΌν•œ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•œλ‹€.

<script>
function PureComponent(props) {
 const { a,b } = props
 return <div> { a,b } </div>
}
</script>

이 μ»΄ν¬λ„ŒνŠΈλŠ” μˆœμˆ˜ν•œ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλ‘œ λΆ„λ₯˜ν•  수 μžˆλ‹€.
props의 값을 κΈ°μ€€μœΌλ‘œ a,bλ₯Ό λ”ν•˜κ³ , κ·Έ κ²°κ³Όλ₯Ό
HTMLDivElement둜 λ Œλ”λ§ ν•˜κ³  μžˆλ‹€.
외뢀에 μ–΄λ–€ 영ν–₯을 λ―ΈμΉ˜μ§€λ„ μ•Šμ•˜κ³ ,μ–Έμ œ μ–΄λ””μ„œλ“  λ™μΌν•œ 인수λ₯Ό λ°›μ•„μ„œ λ™μΌν•œ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜κΈ° λ•Œλ¬Έμ— μˆœμˆ˜ν•œ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλΌκ³  λ³Ό 수 μžˆλ‹€.
μˆœμˆ˜ν•œ ν•¨μˆ˜λŠ” μ–Έμ œ μ‹€ν–‰λ˜λ“  항상 κ²°κ³Όκ°€ λ™μΌν•˜κΈ° λ•Œλ¬Έμ— 예츑 κ°€λŠ₯ν•˜λ©°
μ•ˆμ •μ μ΄λΌλŠ” μž₯점이 μžˆλ‹€.
ν•˜μ§€λ§Œ μ›Ή μ—ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“œλŠ” κ³Όμ •μ—μ„œ λΆ€μˆ˜ νš¨κ³ΌλŠ”
μ–΄λ–»κ²Œ 보면 ν”Όν•  수 μ—†λŠ” μš”μ†Œλ‹€.
μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ—μ„œ APIλ₯Ό ν˜ΈμΆœν•œλ‹€λ©΄ 외뢀에 μ–΄λ– ν•œ 영ν–₯(HTTP requset)을 λΌμ³€μœΌλ―€λ‘œ λΆ€μˆ˜ νš¨κ³Όλ‹€. console.logλ˜ν•œ λΈŒλΌμš°μ €μ˜ μ½˜μ†” μ°½μ΄λΌλŠ” 외뢀에 영ν–₯을 λ―Έμ³€μœΌλ―€λ‘œ λΆ€μˆ˜ νš¨κ³Όλ‹€.HTML title을 λ°”κΏ¨λ‹€λ©΄ 이 λ˜ν•œ 외뢀에 영ν–₯을 λ―Έμ³€μœΌλ―€λ‘œ λΆ€μˆ˜ νš¨κ³Όλ‹€.μ΄λŸ¬ν•œ λΆ€μˆ˜ 효과λ₯Ό μ΅œλŒ€ν•œ μ–΅μ œν•  수 μžˆλŠ” λ°©ν–₯으둜 ν•¨μˆ˜λ₯Ό 섀계해야 ν•œλ‹€.
λ¦¬μ•‘νŠΈ κ΄€μ μ—μ„œ λ³Έλ‹€λ©΄ λΆ€μˆ˜ 효과λ₯Ό μ²˜λ¦¬ν•˜λŠ” 훅인 useEffect의 μž‘λ™μ„ μ΅œμ†Œν™”ν•˜λŠ” 것이 κ·Έ μΌν™˜μ΄λΌ ν•  수 μžˆλ‹€. useEffect의 μ‚¬μš©μ€ ν”Όν•  수 μ—†μ§€λ§Œ
μ΅œμ†Œν•œμœΌλ‘œ μ€„μž„μœΌλ‘œμ¨ ν•¨μˆ˜μ˜ 역할을 쒁히고, 버그λ₯Ό 쀄이며,μ»΄ν¬λ„ŒνŠΈμ˜ μ•ˆμ •μ„±μ„ 높일 수 μžˆλ‹€.

🎯 κ°€λŠ₯ν•œ ν•œ ν•¨μˆ˜λ₯Ό μž‘κ²Œ λ§Œλ“€μž

ESLintμ—λŠ” max-lines-per-functionμ΄λΌλŠ” κ·œμΉ™μ΄ μžˆλ‹€.
ν•¨μˆ˜λ‹Ή μ½”λ“œμ˜ 길이가 κΈΈμ–΄μ§ˆμˆ˜λ‘ μ½”λ“œ λƒ„μƒˆ(문제λ₯Ό μΌμœΌν‚¬ μ—¬μ§€κ°€ μžˆλŠ” μ½”λ“œ)
κ°€ λ‚  ν™•λ₯ μ΄ 컀지고,λ‚΄λΆ€μ—μ„œ 무슨 일이 μΌμ–΄λ‚˜λŠ”μ§€ μΆ”μ ν•˜κΈ° μ–΄λ €μ›Œμ§„λ‹€.
이 κ·œμΉ™μ—μ„œλŠ” κΈ°λ³Έκ°’μœΌλ‘œ 50쀄 이상이 λ„˜μ–΄κ°€λ©΄ κ³Όλ„ν•˜κ²Œ 컀진 ν•¨μˆ˜λ‘œ λΆ„λ₯˜ν•˜κ³  κ²½κ³  λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•œλ‹€.κ·Έ 외에도 쀑첩이 μ–Όλ§ˆλ‚˜ 많이 있고 μ½œλ°±μ€ μ–Όλ§ˆλ‚˜ λ§Žμ€μ§€λ„ 이 κ·œμΉ™μ—μ„œ 확인이 κ°€λŠ₯ν•˜λ‹€.
ESLint의 κ·œμΉ™ μš”μ μ€ ν•˜λ‚˜μ˜ ν•¨μˆ˜μ—μ„œ λ„ˆλ¬΄λ‚˜ λ§Žμ€ 일을 ν•˜μ§€ μ•Šκ²Œ ν•˜λŠ” 것이닀.ν•¨μˆ˜λŠ” ν•˜λ‚˜μ˜ 일을, κ·Έ ν•˜λ‚˜λ§Œ μž˜ν•˜λ©΄λœλ‹€. ν•¨μˆ˜μ˜ μ›λž˜ λͺ©μ μΈ μž¬μ‚¬μš©μ„±μ„ 높일 수 μžˆλŠ” 방법이닀.κΈ€μ“΄ μ‹œμ μœΌλ‘œ νŒ€μ›λ“€κ³Ό ν”„λ‘œμ νŠΈλ₯Ό ν˜‘μ—…ν•˜μ—¬ 진행쀑인데 ESLint의 μ€‘μš”μ„±μ„ μ •ν™•νžˆ νŒŒμ•…ν•˜μ§€ λͺ»ν•˜κ³  μ‚¬μš©μ„ μ•ˆν•˜κ³ μžˆμ—ˆλ‹€. λ‹Ήμž₯ 이 사싀을 μ•Œλ¦¬κ³  내일뢀터 ESLintλ₯Ό ν™œμš©ν•˜μ—¬ μž‘μ—… 진행을 ν•˜λŠ”κ²Œ μ’‹κ² λ‹€.

🎯 λˆ„κ΅¬λ‚˜ 이해할 수 μžˆλŠ” 이름을 λΆ™νžˆμž

본인이 μ‚¬μš©ν•˜λŠ” ν”„λ‘œμ νŠΈμ˜ ν”„λ ˆμž„μ›Œν¬μ— Terserκ°€ μ„€μΉ˜λΌ μžˆλ‹€λ©΄ ν•œκΈ€λ‘œ 넀이밍 ν•˜λŠ” 것도 쒋은 방법이 될 수 μžˆλ‹€.TerserλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό 맹글링(mangling, μ½”λ“œλ₯Ό μ»΄νŒŒμΌλŸ¬κ°€ 이해할 수 μžˆλŠ” μˆ˜μ€€μ—μ„œ λ‹¨μˆœν™”)및 μ••μΆ•ν•˜λŠ” 도ꡬ닀.
Terser

μœ„ 링크λ₯Ό λ°©λ¬Έν•΄μ„œ ν•œλ²ˆ ν…ŒμŠ€νŠΈ ν•΄ 보면 ν•œκΈ€λ‘œ λ³€μˆ˜λͺ…μ΄λ‚˜ ν•¨μˆ˜λͺ…을 μž‘μ„±ν•΄λ„ μ΅œμ’… 결과물에 크게 λ¬Έμ œκ°€ μ—†λ‹€λŠ” 사싀을 μ•Œκ²Œ 될 것이닀.
ν•œκΈ€ λ³€μˆ˜λͺ…을 μ‚¬μš©ν•œ μ½”λ“œλ₯Ό Terser같은 ν”„λ ˆμž„μ›Œν¬λ‘œ μ••μΆ•ν•  수 μžˆλ‹€λŠ”κ²ƒλ§Œ μΈμ§€ν•˜κ³ μžˆμœΌλ©΄ λœλ‹€.
μ½”λ“œ ν¬κΈ°λ‚˜ λ²ˆλ“€λ§ 속도에 단점이 μžˆμ§€λ§Œ,μ‹€μ œ μ„œλΉ„μŠ€λ˜λŠ” μ½”λ“œμ—λŠ” 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šκ³ , ν•œκΈ€μ΄ νŽΈν•œ ν•œκ΅­ κ°œλ°œμžλ“€μ—κ²Œ ν•¨μˆ˜λ‚˜ λ³€μˆ˜ 넀이밍에 μžˆμ–΄ 자유λ₯Ό μ€€λ‹€λŠ” μ μ—μ„œ κ³ λ €ν•΄λ³Όλ§Œ ν•œ ν”„λ ˆμž„μ›Œν¬λ‹€.

🎯 정리

ν•¨μˆ˜λΌλŠ” 기초λ₯Ό 잘 λ‹€μ Έλ‘”λ‹€λ©΄ λ¦¬μ•‘νŠΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ œμž‘λΏλ§Œ μ•„λ‹ˆλΌ μžλ°”μŠ€ν¬λ¦½νŠΈ μƒνƒœκ³„λ₯Ό μ΄ν•΄ν•˜λŠ” 데 λ§Žμ€ 도움이 될 것이닀.

➑️ λ‹€μŒ κΈ€ μ—μ„œλŠ” ν΄λž˜μŠ€μ— λŒ€ν•΄ μ‚΄νŽ΄λ³΄μž.

profile
β˜„οΈ

0개의 λŒ“κΈ€