🧹 λ‚΄κ°€ 보렀고 μ •λ¦¬ν•˜λŠ” 클린 μ½”λ“œ

zamanΒ·2022λ…„ 9μ›” 19일
0

Theories

λͺ©λ‘ 보기
5/5
post-thumbnail

참쑰 좜처
ν† μŠ€ | μ‹€λ¬΄μ—μ„œ λ°”λ‘œ μ“°λŠ” ν”„λ‘ νŠΈμ—”λ“œ 클린 μ½”λ“œ
λ“œλ¦Όμ½”λ”© | μ½”λ”© μž˜ν•˜λŠ” 팁 세가지

ν΄λ¦°μ½”λ“œμ— λŒ€ν•΄ μ•Œμ•„λ³΄λ˜ 쀑 도움이 된 μ˜μƒ 두 개λ₯Ό μš”μ•½ν•΄ 정리해보렀 ν•œλ‹€.

1. νŠΉμ • 지식과 λ‘œμ§μ€ ν•œ κ³³μ—μ„œ λͺ…ν™•ν•˜κ³  μ‹ λ’°ν•  수 μžˆλ„λ‘ μ‘΄μž¬ν•΄μ•Ό 함

why? μž¬μ‚¬μš©μ„±, μœ μ§€λ³΄μˆ˜λ₯Ό μœ„ν•΄!
같은 λ‘œμ§μ„ 반볡적으둜 μž‘μ„±ν•΄λ‘λ©΄

  • μˆ˜μ •μ‹œ 일일히 μˆ˜μ •ν•΄μ•Όν•¨ β†’ 더 λ§Žμ€ μ‹œκ°„μ΄ ν•„μš”ν•˜λ©° νš¨μœ¨μ„±μ΄ 떨어짐
  • μœ μ§€λ³΄μˆ˜κ°€ μ–΄λ ΅λ‹€ β†’ ν•˜λ‚˜λΌλ„ 빠트리면 λ…Έλ‹΅;;

2. μ½”λ“œλŠ” λ‹¨μˆœν•˜κ³  λ©μ²­ν•˜κ²Œ 짜자

λŒ€λΆ€λΆ„μ˜ μ‹œμŠ€ν…œμ€ λ³΅μž‘ν•  λ•Œ 보닀 μ‹¬ν”Œν•˜κ²Œ λ§Œλ“€μ–΄μ‘Œμ„ λ•Œ κ°€μž₯ 잘 λ™μž‘ν•œλ‹€. λ”°λΌμ„œ μ‹œμŠ€ν…œμ„ λ””μžμΈν•  땐 μ‹¬ν”Œν•¨μ΄ μ£Ό λͺ©ν‘œκ°€ λ˜μ–΄μ•Ό ν•˜λ©° λΆˆν•„μš”ν•œ λ³΅μž‘μ„±μ€ ν”Όν•΄μ•Ό ν•œλ‹€.

3. You Ain't Gonna Need It!

why? 잘λͺ»λœ κΈ°λŠ₯ κ°œλ°œμ€ λ§Žμ€ μœ μ§€λ³΄μˆ˜ μ‹œκ°„, 개발 λΉ„μš©μ„ μž‘μ•„λ¨ΉμŒ
λ”°λΌμ„œ ν•„μš”ν•˜μ§€ μ•Šμ€ κΈ°λŠ₯, μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” κΈ°λŠ₯, μ§€λ‚˜μΉ˜κ²Œ λ―Έλž˜μ§€ν–₯적인 κΈ°λŠ₯은 μ§€μ–‘ν•˜μž!


1. μ‹€λ¬΄μ—μ„œ 클린 μ½”λ“œμ˜ ν•„μš”μ„±

πŸ™… 흐름 νŒŒμ•…μ΄ μ–΄λ ΅κ³  도메인 λ§₯락이 ν‘œν˜„λ˜μ§€ μ•Šμ•„ λ™λ£Œμ—κ²Œ 물어봐야 μ•Œ 수 μžˆλŠ” μ½”λ“œ
β†’ κ°œλ°œν•  λ•Œ 병λͺ©μ΄ 됨

  • μœ μ§€λ³΄μˆ˜ν•  λ•Œ μ‹œκ°„μ΄ 였래걸리며 μ‹¬ν•˜λ©΄ κΈ°λŠ₯ μΆ”κ°€κ°€ λΆˆκ°€λŠ₯ν•œ μƒνƒœκ°€ 됨
  • μ„±λŠ₯이 μ•ˆμ’‹μ€ κ²½μš°κ°€ λŒ€λΆ€λΆ„

=== μœ μ§€ 보수 μ‹œκ°„μ˜ 단좕
1. μ½”λ“œ νŒŒμ•…
2. 디버깅
3. 리뷰

2. μ•ˆμΌν•œ μ½”λ“œ μΆ”κ°€μ˜ 함정

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

클린 μ½”λ“œ !== 짧은 μ½”λ“œ
ν΄λ¦°μ½”λ“œλŠ” μ›ν•˜λŠ” λ‘œμ§μ„ λΉ λ₯΄κ²Œ 찾을 수 μžˆλŠ” μ½”λ“œμ§€ 짧은 μ½”λ“œκ°€ μ•„λ‹ˆλ‹€

μ›ν•˜λŠ” λ‘œμ§μ„ λΉ λ₯΄κ²Œ 찾으렀면?

😑 ν•˜λ‚˜μ˜ λͺ©μ μ„ 가진 μ½”λ“œκ°€ 흩뿌렀 μžˆμ–΄
βœ… 응집도 ν–₯상!

😑 ν•˜λ‚˜μ˜ ν•¨μˆ˜κ°€ μ—¬λŸ¬ 가지 일을 ν•˜κ³  μžˆμ–΄
βœ… λ‹¨μΌμ±…μž„ 원칙 λ”°λ₯΄κΈ°!

😑 ν•¨μˆ˜μ˜ μ„ΈλΆ€κ΅¬ν˜„ 단계가 μ œκ°κ°μ΄μ•Ό
βœ… 좔상화 단계 μ‘°μ •! (핡심 κ°œλ…μ„ ν•„μš”ν•œ 만큼만 λ…ΈμΆœ)

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

1. 응집도

: 같은 λͺ©μ μΈ μ½”λ“œλŠ” λ­‰μ³λ‘μž

πŸ€” 무엇을 뭉쳐야 ν• κΉŒ?

✨ λ­‰μΉ˜λ©΄ μΎŒμ ν•œ μ½”λ“œ 예) λ‹Ήμž₯ λͺ°λΌλ„ λ˜λŠ” λ””ν…ŒμΌ
cf) λ­‰μΉ˜λ©΄ λ‹΅λ‹΅ 예) μ½”λ“œ νŒŒμ•…μ— ν•„μˆ˜μ μΈ 핡심 정보 πŸ‘‰ ν΄λ¦°μ½”λ“œλŠ” 짧은 μ½”λ“œκ°€ μ•„λ‹ˆλ‹€β—οΈ

πŸ’‘ 핡심 데이터와 μ„ΈλΆ€ κ΅¬ν˜„ λ‚˜λˆ„κΈ°
예) νŒμ—… λͺ¨λ‹¬ μ½”λ“œ

  • 핡심 데이터
    : νŒμ—… λ²„νŠΌ ν΄λ¦­μ‹œ μˆ˜ν–‰ν•˜λŠ” μ•‘μ…˜, νŒμ—…μ˜ 제λͺ©, λ‚΄μš©
  • μ„ΈλΆ€ κ΅¬ν˜„
    : νŒμ—…μ„ μ—΄κ³  닫을 λ•Œ μ‚¬μš©ν•˜λŠ” μƒνƒœ, μ»΄ν¬λ„ŒνŠΈμ˜ μ„ΈλΆ€ λ§ˆν¬μ—…, νŒμ—… λ²„νŠΌ 클릭 μ‹œ νŠΉμ • ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•΄μ•Όν•œλ‹€λŠ” 바인딩

✨ 선언적 ν”„λ‘œκ·Έλž˜λ°
: 핡심 λ°μ΄ν„°λ§Œ 전달받고 μ„ΈλΆ€ κ΅¬ν˜„μ€ 뭉쳐 μˆ¨κ²¨λ‘λŠ” 개발 μŠ€νƒ€μΌ

πŸ‘‰ 무엇을 ν•˜λŠ” ν•¨μˆ˜μΈμ§€ λΉ λ₯΄κ²Œ 이해 κ°€λŠ₯!

cf) λͺ…λ Ήν˜• ν”„λ‘œκ·Έλž˜λ°: μ–΄λ–»κ²Œ 해야할지 ν•˜λ‚˜ν•˜λ‚˜ λͺ…λ Ήν•˜κΈ°

κ·Έλ ‡λ‹€κ³  선언적 ν”„λ‘œκ·Έλž˜λ°μ΄ 무쑰건 쒋은것은 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— 두 방식 λͺ¨λ‘ μœ λ™μ μœΌλ‘œ μ‚¬μš©ν•˜μž!
예) Prop으둜 'μ–΄λ–»κ²Œ ν•΄μ•Ό ν•˜λŠ”μ§€'λ₯Ό μ„ΈλΆ€μ μœΌλ‘œ λ„˜κ²¨μ•Ό ν•˜λŠ” 경우 πŸ‘‰ λͺ…λ Ήν˜• 섀계

2. 단일 μ±…μž„

: ν•œ ν•¨μˆ˜λŠ” ν•˜λ‚˜μ˜ 일만 μ‘°μ§€μž
λšœλ ·ν•œ ν•¨μˆ˜λͺ…μœΌλ‘œ μ˜λ„νŒŒμ•…μ„ μ‰½κ²Œ!

예) νΌμ—μ„œ 질문 제좜 λ²„νŠΌμ„ ν΄λ¦­ν–ˆμ„ λ•Œ λΆˆλ¦¬λŠ” ν•¨μˆ˜λ‘œ μ•½κ΄€ λ™μ˜μ—¬λΆ€λ₯Ό μ²΄ν¬ν•˜κ³  μ§ˆλ¬Έμ„ μ œμΆœν•¨
ν•¨μˆ˜λͺ…: handle질문제좜
β†’ μ•½κ΄€μ²΄ν¬λž‘ 질문 제좜이 μ„žμ—¬μžˆκΈ° λ•Œλ¬Έ μ•Œλ§žμ§€ μ•Šλ‹€!

μ€‘μš” ν¬μΈνŠΈκ°€ λͺ¨λ‘ λ“€μ–΄μžˆμ–΄μ•Ό ν•œλ‹€

  • ν•œ 가지 일만 ν•˜λŠ” λͺ…ν™•ν•œ μ΄λ¦„μ˜ ν•¨μˆ˜
  • ν•œ 가지 일만 ν•˜λŠ” κΈ°λŠ₯μ„± μ»΄ν¬λ„ŒνŠΈ(λ¦¬μ•‘νŠΈ μ»΄ν¬λ„ŒνŠΈλ‘œ κΈ°λŠ₯ 뢄리도 κ°€λŠ₯)
  • 쑰건이 λ§Žμ•„μ§€λ©΄ ν•œκΈ€ 이름도 μœ μš©ν•˜λ‹€!
    : 도메인이 λ³΅μž‘ν•΄μ„œ μ˜μ–΄ μ΄λ¦„μœΌλ‘œ 길게 μ§“λŠ” 게 였히렀 λ³΅μž‘λ„λ₯Ό 높일 λ•Œ, μƒμˆ˜λ₯Ό μ§κ΄€μ μœΌλ‘œ 보고 싢을 λ•Œ, λ³΅μž‘ν•œ 쑰건문이 λ§Žμ•„μ§ˆ λ•Œ 맀우 유용

3. 좔상화

: λ‘œμ§μ—μ„œ 핡심 κ°œλ…μ„ λ½‘μ•„λ‚΄μž

μ–Όλ§ˆλ‚˜ 좔상화 ν•  것인가? 좔상화 정도!

<Button onClick={showConfirm}>
  전솑
</Button>
{isShowConfirm && (
	<Confirm onClick={() => {showMessage("succes")}} />
)}
<ConfirmButton onConfirm={showMessage("succes")}>
  전솑
</ConfirmButton>
<ConfirmButton message="succes">
  전솑
</ConfirmButton>
<ConfirmButton />

좔상화 μ •λ„λŠ” 상황에 따라 λ§žμΆ”λ©΄ λœλ‹€. 단, 좔상화 μˆ˜μ€€μ΄ μ„žμ—¬μžˆλ‹€λ©΄ μ½”λ“œ νŒŒμ•…μ΄ μ–΄λ €μ›Œμ§€λ‹ˆ 톡일할 것!

μ½”λ“œλ₯Ό μˆ˜μ •ν•  λ•Œ κ°€μ Έμ•Ό ν•  νƒœλ„

1. λ‹΄λŒ€ν•˜κ²Œ κΈ°μ‘΄ μ½”λ“œ μˆ˜μ •ν•˜κΈ°

λ‘λ €μ›Œν•˜μ§€ 말고 κΈ°μ‘΄ μ½”λ“œλ₯Ό 가지고 λ†€μž.

2. 큰 κ·Έλ¦Ό λ³΄λŠ” μ—°μŠ΅ν•˜κΈ°

κ·Έλ•ŒλŠ” 맞고 μ§€κΈˆμ€ 틀릴 수 μžˆλ‹€, κΈ°λŠ₯ μΆ”κ°€ μžμ²΄λŠ” 클린해도, μ „μ²΄μ μœΌλ‘œλŠ” μ–΄μ§€λŸ¬μšΈ 수 μžˆλ‹€.

3. νŒ€κ³Ό ν•¨κ»˜ κ³΅κ°λŒ€ ν˜•μ„±

μ½”λ“œμ—λŠ” 정닡이 μ—†λ‹€. λ”°λΌμ„œ νŒ€μ›λ“€κ³Ό λͺ…μ‹œμ μœΌλ‘œ μ΄μ•ΌκΈ°ν•˜λŠ” μ‹œκ°„μ„ κ°–κ³  각자 μƒκ°ν•˜λŠ” 병λͺ© 지점을 κ³΅μœ ν•΄ 집단 지성을 λ°œνœ˜ν•΄λ³΄μž.

4. λ¬Έμ„œλ‘œ 적어보기

κΈ€λ‘œ 적어야 λͺ…ν™•ν•΄ 진닀. ν–₯ν›„ μ–΄λ–€ μ μ—μ„œ μœ„ν—˜ν•  수 μžˆλŠ”μ§€, μ–΄λ–»κ²Œ κ°œμ„ ν•  수 μžˆλŠ”μ§€ κΈ°λ‘ν•˜μž.

profile
개발자둜 μ„±μž₯ν•˜κΈ° μœ„ν•œ μ•„μΉ΄μ΄λΈŒ 😎

0개의 λŒ“κΈ€