μ£Όμš” μ½˜ν…μΈ λ‘œ κ±΄λ„ˆλ›°κΈ°

Desegmentation

WIP

이 글은 μž‘μ„± μ€‘μž…λ‹ˆλ‹€

이 κΈ€μ˜ λ°œν–‰μ„ μ•žλ‹ΉκΈ°λ €λ©΄ λ‹€μŒμ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€:


🍰 Stay tuned!

상황​

ν”„λ‘œμ νŠΈμ—μ„œ λ™μΌν•œ λ„λ©”μΈμ˜ λͺ¨λ“ˆλ“€μ΄ μ„œλ‘œ μ—°κ΄€λ˜μ–΄ μžˆμŒμ—λ„ λΆˆκ΅¬ν•˜κ³ , ν”„λ‘œμ νŠΈ 전체에 λΆˆν•„μš”ν•˜κ²Œ λΆ„μ‚°λ˜μ–΄ μžˆλŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€.

β”œβ”€β”€ components/
| β”œβ”€β”€ DeliveryCard
| β”œβ”€β”€ DeliveryChoice
| β”œβ”€β”€ RegionSelect
| β”œβ”€β”€ UserAvatar
β”œβ”€β”€ actions/
| β”œβ”€β”€ delivery.js
| β”œβ”€β”€ region.js
| β”œβ”€β”€ user.js
β”œβ”€β”€ epics/
| β”œβ”€β”€ delivery.js
| β”œβ”€β”€ region.js
| β”œβ”€β”€ user.js
β”œβ”€β”€ constants/
| β”œβ”€β”€ delivery.js
| β”œβ”€β”€ region.js
| β”œβ”€β”€ user.js
β”œβ”€β”€ helpers/
| β”œβ”€β”€ delivery.js
| β”œβ”€β”€ region.js
| β”œβ”€β”€ user.js
β”œβ”€β”€ entities/
| β”œβ”€β”€ delivery/
| | β”œβ”€β”€ getters.js
| | β”œβ”€β”€ selectors.js
| β”œβ”€β”€ region/
| β”œβ”€β”€ user/

λ¬Έμ œμ β€‹

μ΄λŠ” 높은 응집도 원칙을 μœ„λ°˜ν•˜λ©°, Changes Axis의 κ³Όλ„ν•œ ν™•μž₯을 μ΄ˆλž˜ν•©λ‹ˆλ‹€.

λ¬΄μ‹œν–ˆμ„ λ•Œμ˜ 결과​

  • delivery κ΄€λ ¨ 둜직 μˆ˜μ • μ‹œ μ—¬λŸ¬ μœ„μΉ˜μ˜ μ½”λ“œλ₯Ό μ°Ύμ•„ μˆ˜μ •ν•΄μ•Ό ν•˜λ©°, μ΄λŠ” Changes Axisλ₯Ό λΆˆν•„μš”ν•˜κ²Œ ν™•μž₯ν•©λ‹ˆλ‹€
  • user κ΄€λ ¨ λ‘œμ§μ„ μ΄ν•΄ν•˜λ €λ©΄ ν”„λ‘œμ νŠΈ μ „λ°˜μ˜ actions, epics, constants, entities, componentsλ₯Ό λͺ¨λ‘ 찾아봐야 ν•©λ‹ˆλ‹€
  • 암묡적 μ—°κ²°λ‘œ 인해 도메인 μ˜μ—­μ΄ λΉ„λŒ€ν•΄μ§€κ³  관리가 μ–΄λ €μ›Œμ§‘λ‹ˆλ‹€
  • λΆˆν•„μš”ν•œ νŒŒμΌλ“€μ΄ μŒ“μ—¬ 문제 인식이 μ–΄λ €μ›Œμ§‘λ‹ˆλ‹€

ν•΄κ²° λ°©μ•ˆβ€‹

λ„λ©”μΈμ΄λ‚˜ use case와 κ΄€λ ¨λœ λͺ¨λ“ˆλ“€μ„ ν•œ 곳에 λͺ¨μ•„ λ°°μΉ˜ν•©λ‹ˆλ‹€.

이λ₯Ό 톡해 λͺ¨λ“ˆ ν•™μŠ΅μ΄λ‚˜ μˆ˜μ • μ‹œ ν•„μš”ν•œ λͺ¨λ“  μš”μ†Œλ₯Ό μ‰½κ²Œ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

이 접근은 μ½”λ“œλ² μ΄μŠ€μ˜ 탐색성과 가독성을 높이고, λͺ¨λ“ˆ κ°„ 관계λ₯Ό 더 λͺ…ν™•ν•˜κ²Œ λ³΄μ—¬μ€λ‹ˆλ‹€.

- β”œβ”€β”€ components/
- | β”œβ”€β”€ DeliveryCard
- | β”œβ”€β”€ DeliveryChoice
- | β”œβ”€β”€ RegionSelect
- | β”œβ”€β”€ UserAvatar
- β”œβ”€β”€ actions/
- | β”œβ”€β”€ delivery.js
- | β”œβ”€β”€ region.js
- | β”œβ”€β”€ user.js
- β”œβ”€β”€ epics/{...}
- β”œβ”€β”€ constants/{...}
- β”œβ”€β”€ helpers/{...}
β”œβ”€β”€ entities/
| β”œβ”€β”€ delivery/
+ | | β”œβ”€β”€ ui/ # ~ components/
+ | | | β”œβ”€β”€ card.js
+ | | | β”œβ”€β”€ choice.js
+ | | β”œβ”€β”€ model/
+ | | | β”œβ”€β”€ actions.js
+ | | | β”œβ”€β”€ constants.js
+ | | | β”œβ”€β”€ epics.js
+ | | | β”œβ”€β”€ getters.js
+ | | | β”œβ”€β”€ selectors.js
+ | | β”œβ”€β”€ lib/ # ~ helpers
| β”œβ”€β”€ region/
| β”œβ”€β”€ user/

μ°Έκ³  μžλ£Œβ€‹