πŸ’» 20240527 μ‹€λ¬΄μ—μ„œ λ°”λ‘œ μ“°λŠ” Frontend Clean Code

이좘길·2024λ…„ 5μ›” 27일
0

ν•™μŠ΅μΌμ§€

λͺ©λ‘ 보기
3/4
post-thumbnail
post-custom-banner

πŸ“Œ μ°Έμ‘°

λ‘œλ²„νŠΈ C. λ§ˆν‹΄ ν΄λ¦°μ½”λ“œ
νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μœ„ν•œ ν΄λ¦°μ½”λ“œ
μ‹€λ¬΄μ—μ„œ λ°”λ‘œ μ“°λŠ” ν”„λ‘ νŠΈμ—”λ“œ ν΄λ¦°μ½”λ“œ


πŸ“Œ κ°œμš”

ReactλΌλŠ” μžμœ λ‘œμ›€ μ•ˆμ—μ„œ Typescript, Webpack, ESLintλ“±μ˜ μ‘°ν•©μœΌλ‘œ κ·œμœ¨μ„ λ§Œλ“€μ–΄μ„œ μ‚¬μš©ν•˜κ³  μžˆμ—ˆλ‹€. μΆ”κ°€λ‘œ, ν΄λ¦°μ½”λ“œ, λ¦¬νŒ©ν† λ§ κ΄€λ ¨ μ§€μ‹λ“€λ‘œ 가독성이 쒋은 μ½”λ“œλ₯Ό μž‘μ„±ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν–ˆλ‹€.

μžμœ ν•¨μ€ λ…ΌμŸμœΌλ‘œ μ΄μ–΄μ‘Œλ‹€. λͺ¨λ“  쑰직을 κ²ͺμ–΄ λ³΄μ§€λŠ” μ•Šμ•˜μœΌλ‚˜, ν΄λ¦°μ½”λ“œ, λ¦¬νŒ©ν† λ§ κ΄€λ ¨ν•΄μ„œ μœ λ… 이견듀이 λ§Žμ•˜κ³ , μ΄λŠ” κ±΄μ „ν•˜κ³  λ°œμ „μ μΈ λŒ€ν™”κ°€ μ•„λ‹Œ νƒμƒκ³΅λ‘ μœΌλ‘œ 빠쑌던 기얡듀이 λ– μ˜¬λžλ‹€.

μ‚¬λžŒμ΄ λͺ¨μ΄λŠ” κ³³μ—λŠ” 정닡은 μ—†μ§€λ§Œ, μ–Έμ œλ‚˜ κ°œμ„ μ€ μ‘΄μž¬ν•œλ‹€κ³  μƒκ°ν•œλ‹€. 이번 κ³„κΈ°λ‘œ ν΄λ¦°μ½”λ“œ, λ¦¬νŒ©ν† λ§μ— λŒ€ν•œ 본질적인 지식듀을 μ²΄λ“ν•˜κ³  λ…Όμ˜ν•¨μœΌλ‘œμ„œ λ‹€μŒ μ‘°μ§μ—μ„œ 같은 λ¬Έμ œκ°€ λ‚˜νƒ€ λ‚¬μ„λ•Œ κ°œμ„ μ— κΈ°μ—¬ν•˜κ³  μ‹Άλ‹€λŠ” 생각이 λ“€μ—ˆλ‹€.


πŸ“Œ What is clean code?

개발 μ‘°μ§μ—μ„œ κ°€μž₯ μ€‘μš”ν•œ ν¬μΈνŠΈλŠ” 'μ‹œκ°„μ€ 곧 λˆμ΄λ‹€' μ½”λ“œ νŒŒμ•…μ΄ μ–΄λ €μš΄ 경우 μ‹œκ°„μ΄ ν• μ• λ˜κ³  λΉ„μš©μ΄ λΉ μ Έ λ‚˜κ°„λ‹€κ³  μƒκ°ν•˜λ©΄ 정말 클린 μ½”λ“œλŠ” μ€‘μš”ν•˜λ‹€.

쑰금 μ„œμˆ ν•΄μ„œ μž‘μ„±ν•˜μžλ©΄ κ°œλ°œμžλ“€μ—κ²Œ 병λͺ©μ„ μΌμœΌν‚€κ³ , μœ μ§€λ³΄μˆ˜ μ‹œκ°„μ΄ μ¦λŒ€λ˜λ©°, κΈ°λŠ₯ μΆ”κ°€κ°€ μ–΄λ ΅κ³ , λŒ€κ²Œ 이런 μ½”λ“œλ“€μ΄ μ„±λŠ₯도 쒋지 λͺ»ν•˜λ‹€.

과거의 λ‚˜ λ˜λŠ” λ™λ£Œκ°€ μ§  μ½”λ“œλ₯Ό λΉ λ₯΄κ²Œ 이해할 수 μžˆλ‹€λ©΄, μœ„ λ¬Έμ œλ“€μ΄ ν•΄μ†Œκ°€ 되고 λ”μš± 효율적인 개발 쑰직이 될 수 μžˆλ‹€.


πŸ“Œ μ–Έμ œλΆ€ν„° μ½”λ“œκ°€ μ§€μ €λΆ„ν•΄μ§ˆκΉŒ?

κ°œλ°œμžκ°€ 쑰직에 λ“€μ–΄κ°€μ„œ 일을 ν•˜λŠ” 경우, κΈ°μ‘΄ μ½”λ“œμ—μ„œ κΈ°λŠ₯ μΆ”κ°€ ν•˜λŠ” 일을 맑을 것이닀. 이 λΆ€λΆ„μ—μ„œ κΈ΄μž₯을 λ†“μΉ˜λ©΄ ν΄λ¦°ν•˜μ§€ λͺ»ν•œ μ½”λ“œλ₯Ό μž‘μ„±μœΌλ‘œ 이어지며, 이 μˆœκ°„λ“€μ΄ μŠ€λ…Έμš°λ³Όμ΄ λ˜μ–΄ 병λͺ©μ„ μΌμœΌν‚¬ 수 μžˆλ‹€.

ν΄λ¦°μ½”λ“œλŠ” 짧은 μ½”λ“œκ°€ μ•„λ‹ˆλ‹€.
ν΄λ¦°μ½”λ“œλŠ” μ›ν•˜λŠ” λ‘œμ§μ„ 빨리 찾을 수 μžˆλŠ” μ½”λ“œμ΄λ‹€.

μ•„λž˜ μ˜ˆμ‹œλŠ” κΈ°μ‘΄ μ½”λ“œμ—μ„œ μ‹ κ·œ κΈ°λŠ₯을 μΆ”κ°€ν•  λ•Œ μ£Όμ˜μ‚¬ν•­λ“€μ΄λ‹€.

  1. ν•˜λ‚˜μ˜ λͺ©μ μ„ 가진 μ½”λ“œκ°€ 흩뿌렀져 μžˆμ„ 경우
  2. ν•¨μˆ˜κ°€ μ—¬λŸ¬ 가지 일을 ν•˜κ³  μžˆλŠ” 경우
  3. ν•¨μˆ˜μ˜ μ„ΈλΆ€κ΅¬ν˜„ 단계가 제각각인 경우

πŸ“Œ λ‘œμ§μ„ λΉ λ₯΄κ²Œ 찾을 수 μžˆλŠ” μ½”λ“œ

개발자 μž‘μ—… 병λͺ© ν˜„μƒμ„ μΌμœΌν‚€λŠ” μš”μΈλ“€μ„ μ‚΄νŽ΄ λ³΄μ•˜λ‹€.
κ·Έλ ‡λ‹€λ©΄, μ–΄λ–»κ²Œ μž‘μ„±ν•΄μ•Ό μ›ν•˜λŠ” λ‘œμ§μ„ 빨리 찾을 수 μžˆλŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆμ„κΉŒ?

응집도

  1. μ •μ˜ : 같은 λͺ©μ μ˜ μ½”λ“œλŠ” λ­‰μ³λ‘μž, '선언적 ν”„λ‘œκ·Έλž˜λ°'
  2. 절차
    1. μ»€μŠ€ν…€ ν›… ν™œμš© : μ‘μ§‘λ„λŠ” λ†’ν˜”μœΌλ‚˜, 핡심 κΈ°λŠ₯ νŒŒμ•…μ΄ 어렀움
      • λ­‰μΉ˜λ©΄ 쾌적 : λ‹Ήμž₯ λͺ°λΌλ„ λ˜λŠ” λ””ν…ŒμΌ
      • λ­‰μΉ˜λ©΄ λ‹΅λ‹΅ : ν˜„μž¬ μ½”λ“œ νŒŒμ•…μ— ν•„μˆ˜μ μΈ 핡심 정보
    2. 응집도 λ†’νžˆλŠ” 방법
      • 남겨야 ν•  핡심 데이터 : νŒμ—… 클릭 μ‹œ μ•‘μ…˜, 제λͺ©, λ‚΄μš©
      • μˆ¨κ²¨λ„ 될 μ„ΈλΆ€ κ΅¬ν˜„ λ‚˜λˆ„κΈ° : νŒμ—… μ—΄κ³  λ‹«λŠ” μƒνƒœ, μ»΄ν¬λ„ŒνŠΈ μ„ΈλΆ€ λ§ˆν¬μ—…, λ²„νŠΌ 클릭 μ‹œ νŠΉμ • ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•΄μ•Ό ν•œλ‹€λŠ” 바인딩

λ‹¨μΌμ±…μž„

  1. μ •μ˜ : ν•˜λ‚˜μ˜ 일을 ν•˜λŠ” λšœλ ·ν•œ μ΄λ¦„μ˜ ν•¨μˆ˜λ₯Ό λ§Œλ“€μž
  2. 절차
    1. ν•œ 가지 일만 ν•˜λŠ” ν•¨μˆ˜λͺ…
    2. 예) λ²„νŠΌ ν•Έλ“€λŸ¬μ—μ„œ 둜그 전솑, API콜 ν•¨κ»˜ ν•˜λŠ” 경우
      • 둜그 전솑 μ»΄ν¬λ„ŒνŠΈλ₯Ό λ§Œλ“€μ–΄ ν΄λ¦­μ‹œ, μžλ™μœΌλ‘œ 전솑할 수 μžˆλ„λ‘

좔상화

  1. μ •μ˜ : 핡심 κ°œλ…μ„ λ½‘μ•„λ‚΄μž, 눈으둜 λ³΄μ•˜μ„ λ•Œ, λ°”λ‘œ μ•Œ 수 있게
  2. 절차
    1. JSX μ»΄ν¬λ„ŒνŠΈλ₯Ό, μ»΄ν¬λ„ŒνŠΈ, λ™μž‘μœΌλ‘œ 좔상화
      (onConfirm, onSuccessλ“±)
    2. 라벨을 λ§Œλ“œλŠ” 헬퍼 λ³€μˆ˜λ“€μ„ 헬퍼 ν•¨μˆ˜λ‘œ 좔상화
    3. κ²½κ³  1 : 좔상화 μˆ˜μ€€μ΄ μ„žμ—¬ 있으면 μ½”λ“œ νŒŒμ•…μ΄ 어렀움
    4. κ²½κ³  2 : 클린 μ½”λ“œκ°€ 메인이지 좔상화가 메인이 μ•„λ‹˜μ„ 경계 !!!

πŸ“Œ μ•‘μ…˜ μ•„μ΄ν…œ

  1. λ‹΄λŒ€ν•˜κ²Œ κΈ°μ‘΄ μ½”λ“œ μˆ˜μ •ν•˜κΈ°
  2. 큰 κ·Έλ¦Ό λ³΄λŠ” μ—°μŠ΅ν•˜κΈ°
  3. νŒ€κ³Ό ν•¨κ»˜ κ³΅κ°λŒ€ ν˜•μ„±
  4. λ¬Έμ„œλ‘œ 적어보기

πŸ“Œ κ²°λ‘ 

νŒ€ μ•ˆμ—μ„œμ˜ 클린 μ½”λ“œ

  • 3, 4번 μ•‘μ…˜ μ•„μ΄ν…œμ— λŒ€ν•œ 고찰이닀.

[κ³΅κ°λŒ€ ν˜•μ„±]
ν•΄λ‹Ή 뢀뢄에 λŒ€ν•œ 곡동체 μ˜μ‹μ΄ κ²°μ—¬λœ μƒνƒœμ—μ„œ 클린 μ½”λ“œλ₯Ό λ…λ‹¨μ μœΌλ‘œ λ„μž…ν•œλ‹€λ©΄,
클린 μ½”λ“œκ°€ ν΄λ¦°ν•˜μ§€ λͺ»ν•œ μ½”λ“œλ‘œ μ΄μ–΄μ§ˆ 수 μžˆλ‹€λŠ” 생각이 λ“€μ—ˆλ‹€.

[μ•ˆμ •μ μΈ μ½”λ“œ 검증]
1μˆœμœ„λŠ” μ•ˆμ •μ μΈ μ œν’ˆ λ¦΄λ¦¬μ¦ˆμ΄λ‹€. κ·Έλ ‡κΈ° μœ„ν•΄μ„œ λŒμ•„κ°€λŠ” μ½”λ“œλ₯Ό λ§Œλ“€μ–΄μ•Ό ν•˜κ³ 
검증이 ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό 톡해 남아 μžˆμ–΄μ•Ό ν•œλ‹€.

[λ¦¬νŒ©ν† λ§μ— λŒ€ν•œ λ…Όμ˜]
검증이 μ„ ν–‰λœ μƒνƒœμ—μ„œ, ν˜„μž¬ μš°λ¦¬λŠ” μ–΄λ–€ μˆ˜μ€€κΉŒμ§€ λ¦¬νŒ©ν† λ§ μ „λž΅μ„ κ°€μ Έκ°€μ•Ό ν•  지,
λ…Όμ˜λ₯Ό 톡해 λ‚˜μ•„κ°€μ•Ό ν•˜λ©°, λ…Όμ˜λ₯Ό 톡해 λ§žμΆ°μ§„ μˆ˜μ€€ κ°€μš΄λ° PR을 톡해 클린 μ½”λ“œμ— λŒ€ν•œ μ½”λ©˜νŠΈλ₯Ό 남기면 쒋을 것 κ°™λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€.

[λ¬Έμ„œλ₯Ό ν†΅ν•œ λ¦¬νŒ©ν† λ§ μˆ˜μ€€ 버전업]
μΆ”κ°€λ‘œ, λ¬Έμ„œ 릴리즈λ₯Ό 톡해 응집도, λ‹¨μΌμ±…μž„, 좔상화에 λŒ€ν•œ μ μ ˆν•œ κΉŠμ΄μ™€ μˆ˜μ€€μ„ 맞좰 λ‚˜κ°€λ©° λ‚˜μ•„κ°„λ‹€λ©΄, μ—¬λŸ¬λͺ…이 μž‘μ„± ν–ˆμ§€λ§Œ ν•œλͺ…이 μž‘μ„±ν•œ 것 같은 μˆœκ°„μ΄ μ–Έμ  κ°€ μ°Ύμ•„μ˜€μ§€ μ•Šμ„κΉŒ μ‹Άλ‹€.

개인이 κ°–μΆ°μ•Ό ν•  클린 μ½”λ“œ

  • νŒ€ μ•ˆμ—μ„œμ˜ 클린 μ½”λ“œκ°€ 선행이 λ˜μ–΄μ•Ό ν•œλ‹€.
  • 1, 2번 μ•‘μ…˜ μ•„μ΄ν…œμ— λŒ€ν•œ 고찰이닀.

[λ¦¬νŒ©ν† λ§μ€ ν•„μš”ν•˜λ‹€]
Task λ‹¨μœ„μ—μ„œ λ¦¬νŒ©ν† λ§ λ‹¨μœ„κ°€ μ‘΄μž¬ν•  만큼, λ¦¬νŒ©ν† λ§μ€ μ•ˆμ •μ μ΄κ³  λ¦¬μ†ŒμŠ€ νš¨μœ¨μ„±μ„ λ†’νžˆλŠ”λ°μ— κΌ­ ν•„μš”ν•œ μž‘μ—…μ΄λ‹€. 단, μœ„μ—μ„œ μ„€λͺ…ν•œλ°”μ™€ 같이 νŒ€ μ•ˆμ—μ„œμ˜ 클린 μ½”λ“œμ— λŒ€ν•œ ν˜‘μ˜κ°€ 이뀄진 μƒνƒœμ—μ„œ κ·Έ μˆ˜μ€€μ— 맞게 μ§„ν–‰ν•˜κ³ , PR을 톡해 μˆ˜μ • 사항을 μ μš©ν•¨μœΌλ‘œμ„œ ν•¨κ»˜ μ μ§„μ μœΌλ‘œ λ‚˜μ•„ κ°€λŠ”κ²ƒμ΄ μ€‘μš”ν•΄ 보인닀.

[큰 κ·Έλ¦Ό λ³΄λŠ” μ—°μŠ΅ν•˜κΈ°]
μ½”λ“œμ§œκΈ° 전에 νŽœμ„ λ“€κ³ μž λ…Έλ ₯ν•œλ‹€. ν˜„μž¬ λ‚΄κ°€ μž‘μ„±ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλŠ” μ–΄λ–€ μ»΄ν¬λ„ŒνŠΈμ΄κ³  이 μ»΄ν¬λ„ŒνŠΈμ— λͺ©μ μ€ 무엇이며, μ–΄λ–»κ²Œ ν•˜λ©΄ 이 μ»΄ν¬λ„ŒνŠΈκ°€ μˆœμˆ˜ν•¨μ„ μœ μ§€ν•  수 μžˆλŠ”μ§€, λΆˆκ°€ν”Όν•˜κ²Œ 그렇지 λͺ»ν•˜λ‹€λ©΄ μΆ” ν›„, μ–΄λ–€ λ°©ν–₯으둜 이 μ½”λ“œλ₯Ό μˆ˜μ •ν•  지 λ‹€μ–‘ν•œ 고민듀을 μž‘μ„±ν•˜κ³  확신이 λ“€μ—ˆμ„ λ•Œ, μ½”λ“œλ₯Ό μž‘μ„± ν•˜λŠ”κ²ƒμ΄ 쒋을 것 κ°™λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€.

profile
일지λ₯Ό κΎΈμ€€νžˆ μž‘μ„±ν•˜μž.
post-custom-banner

0개의 λŒ“κΈ€