πŸ’» TIL 23.03.17

κΉ€μ˜μš°(Yeongwoo Kim)Β·2023λ…„ 3μ›” 16일
0
post-thumbnail

Refactoringμ—μ„œ 생각해 봐야할 ν•­λͺ©

μ΄λ²ˆμ— refactoring을 μ§„ν–‰ν•˜κΈ° 전에 이번처럼 큰 곡사(refactoring)을 ν•˜μ§€ μ•ŠκΈ° μœ„ν•΄ 기초적인 것을 κ³΅λΆ€ν•˜κ³  μžˆλ‹€. 곡뢀λ₯Ό ν•˜λ‹€λ³΄λ‹ˆ μ–΄λŠ κΈ€μ—μ„œ module의 νŠΉμ„±μ„ κ³ λ €ν•˜μ—¬ directory structreλ₯Ό μž‘μ„±ν•˜λΌλΌλŠ” 문ꡬλ₯Ό λ΄€λ‹€. λ‚˜λŠ” κ·Έλ™μ•ˆ μ•Œμ§€λ„ λͺ»ν•˜λŠ” module을 λ‹Ήμ—°ν•œλ“―μ΄ μ“°λ‹€λ³΄λ‹ˆ 이 말 λœ»μ„ μ΄ν•΄ν•˜μ§€ λͺ»ν–ˆλ‹€. κ·Έλž˜μ„œ λͺ¨λ“ˆμ— λŒ€ν•΄ 곡뢀해보고 μ§€λ‚œκΈ€μ—μ„œ μž‘μ„±ν•œ 디렉토리 ꡬ쑰λ₯Ό λ‹€μ‹œ μž‘μ„±ν•΄λ³΄λ € ν•œλ‹€.

❔ λͺ¨λ“ˆμ΄λž€

  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μ„±ν•˜λŠ” κ°œλ³„μ  μš”μ†Œλ‘œμ„œ μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ½”λ“œ 쑰각을 λ§ν•œλ‹€. 일반적으둜 λͺ¨λ“ˆμ€ κΈ°λŠ₯을 κΈ°μ€€μœΌλ‘œ 파일 λ‹¨μœ„λ‘œ λΆ„λ¦¬ν•œλ‹€. μ΄λ•Œ λͺ¨λ“ˆμ΄ μ„±λ¦½ν•˜λ €λ©΄ λͺ¨λ“ˆμ€ μžμ‹ λ§Œμ˜ 파일 μŠ€μ½”ν”„λ₯Ό κ°€μ§ˆ 수 μžˆμ–΄μ•Όν•œλ‹€.
    좜처 : JavaScript Deep Dive 48μž₯
  • 즉, λͺ¨λ“ˆμ€ κ°œλ³„μ  μ‘΄μž¬λ‘œμ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό λΆ„λ¦¬λ˜μ–΄ μ‘΄μž¬ν•œλ‹€. ν•˜μ§€λ§Œ 완전이 λΆ„λ¦¬λ˜μ–΄ κ°œλ³„μ μœΌλ‘œ μ‘΄μž¬ν•˜λŠ” λͺ¨λ“ˆμ€ μž¬μ‚¬μš©μ΄ λΆˆκ°€λŠ₯ν•˜λ―€λ‘œ 쑴재의 μ˜λ―Έκ°€ μ—†λ‹€κ³  ν•  수 μžˆλ‹€. λ”°λΌμ„œ λͺ¨λ“ˆμ€ κ³΅κ°œκ°€ ν•„μš”ν•œ μžμ‚°μ— ν•œμ •ν•˜μ—¬ λͺ…μ‹œμ μœΌλ‘œ 선택적 κ³΅κ°œκ°€ κ°€λŠ₯ν•˜λ‹€. 이λ₯Ό export라 ν•œλ‹€. export된 λͺ¨λ“ˆμ˜ μžμ‚°μ€ λ‹€λ₯Έ λͺ¨λ“ˆμ—μ„œ μž¬μ‚¬μš©ν•  수 μžˆλŠ”λ°, μ΄λ•Œ 곡개된 λͺ¨λ“ˆμ„ μž¬μ‚¬μš©ν•  λ•Œ μžμ‹ μ˜ μŠ€μ½”ν”„ λ‚΄λ‘œ λΆˆλŸ¬λ“€μ—¬ μ‚¬μš©ν•˜λŠ” 것을 import라 ν•œλ‹€.
  • λ”°λΌμ„œ λͺ¨λ“ˆμ€ κΈ°λŠ₯λ³„λ‘œ λΆ„λ¦¬λ˜μ–΄ κ°œλ³„μ μΈ 파일둜 μž‘μ„±λ˜λŠ”λ°, μ½”λ“œμ˜ λ‹¨μœ„λ₯Ό λͺ…ν™•νžˆ λΆ„λ¦¬ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ꡬ성할 수 있고, μž¬μ‚¬μš©μ„±μ΄ μ’‹μ•„μ„œ 개발 νš¨μœ¨μ„±κ³Ό μœ μ§€λ³΄μˆ˜μ„±μ„ 높일 수 μžˆλ‹€.

Directory Sturcture μž¬μ„€κ³„

 // before
 β”œβ”€β”€ components
 β”‚   β”œβ”€β”€ Header.tsx
 β”‚   β”œβ”€β”€ Footer.tsx
 β”‚   └── Tag.tsx
 β”œβ”€β”€ page
 β”‚   β”œβ”€β”€ mainPage
 β”‚   β”‚   └── index.tsx
 β”‚   └── detailStudyPage
 β”‚       β”œβ”€β”€ index.tsx
 β”‚       β”œβ”€β”€ TabStudyIntroduce.tsx
 |       └── TabBookIntroduce.tsx
 β”œβ”€β”€ style
 β”‚   β”œβ”€β”€ components
 β”‚   β”‚   β”œβ”€β”€ HeaderStyled.tsx
 β”‚   β”‚   β”œβ”€β”€ FooterStyled.tsx
 β”‚   β”‚   └── TagStyled.tsx
 β”‚   └── page
 β”‚       β”œβ”€β”€ mainPage
 β”‚       β”‚   └── MainPageStyled.tsx
 β”‚       └── detailStudyPage
 β”‚           β”œβ”€β”€ DetailStudyPageStyled.tsx
 β”‚           β”œβ”€β”€ TabStudyIntroduceStyled.tsx
 |           └── TabBookIntroduceStyled.tsx
 └── run
  • 기쑴에 κ΅¬μƒν–ˆλ˜ λΆ€λΆ„μ—μ„œ λͺ¨λ“ˆμ˜ νŠΉμ„±μ„ κ³ λ €ν•˜μ§€ μ•Šμ€ 뢀뢄은 styleκ³Ό component의 뢄리닀. λͺ¨λ“ˆμ˜ νŠΉμ„±μƒ 개발의 νš¨μœ¨μ„±κ³Ό μœ μ§€λ³΄μˆ˜μ„±μ„ 높일 수 μžˆλ‹€λŠ” 것인데, 자주 μ‚¬μš©ν•˜λŠ” λͺ¨λ“ˆλΌλ¦¬ ν•¨κ»˜ μžˆμ–΄μ•Ό κ΄€λ¦¬ν•˜κΈ° μš©μ΄ν•  것 κ°™λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€. ν•΄λ‹Ή 생각을 λ°”νƒ•μœΌλ‘œ λ‹€μ‹œ κ΅¬μƒν•΄λ΄€μ„λ•Œμ˜ 결과이닀
     // after
     β”œβ”€β”€ components
     β”‚   β”œβ”€β”€ Header.tsx
     β”‚   β”œβ”€β”€ HeaderStyled.tsx
     β”‚   └── Footer.tsx
     β”‚   β”œβ”€β”€ FooterStyled.tsx
     β”‚   β”œβ”€β”€ Tag.tsx
     β”‚   └── TagStyled.tsx
     β”œβ”€β”€ page
     β”‚   β”œβ”€β”€ mainPage
     β”‚   β”‚   └── index.tsx
     β”‚   β”‚   └── MainPageStyled.tsx
     β”‚   └── detailStudyPage
     β”‚       β”œβ”€β”€ index.tsx
     β”‚       β”œβ”€β”€ TabStudyIntroduce.tsx
     |       β”œβ”€β”€ TabBookIntroduce.tsx
     β”‚       β”œβ”€β”€ DetailStudyPageStyled.tsx
     β”‚       β”œβ”€β”€ TabStudyIntroduceStyled.tsx
     |       └── TabBookIntroduceStyled.tsx
     β”œβ”€β”€ style
     └── run
  • styleμ—λŠ” κ³΅ν†΅μœΌλ‘œ μ‚¬μš©λ˜λŠ” 뢀뢄에 λŒ€ν•΄μ„œ μ‚¬μš©ν•˜λ €κ³  ν•œλ‹€. ν•˜μ§€λ§Œ μ•„μ§κΉŒμ§€ κ³΅ν†΅μœΌλ‘œ μ‚¬μš©λ˜λŠ” μŠ€νƒ€μΌμ— λŒ€ν•΄μ„œ 생각해본 것이 μ—†μœΌλ―€λ‘œ 좔후에 λ„£μ–΄λ³Ό μ˜ˆμ •μ΄λ‹€.
profile
μ°¨κ·Όμ°¨κ·Ό μ„±μž₯ν•˜λŠ” κ°œλ°œμžμž…λ‹ˆλ‹€

0개의 λŒ“κΈ€