Skip to content

Latest commit

Β 

History

History
27 lines (13 loc) Β· 5.63 KB

File metadata and controls

27 lines (13 loc) Β· 5.63 KB

2023 02 23 Clean Architecture

1μž₯

μ±… 제λͺ©μ—λ„ λ‚˜μ˜€λŠ” μ•„ν‚€ν…μ²˜λž€ 무엇인가 μ•„ν‚€ν…μ²˜λŠ” μ €μˆ˜μ€€μ˜ 세뢀사항과 λΆ„λ¦¬λœ "κ³ μˆ˜μ€€"의 무언가λ₯Ό, μ„€κ³„λŠ” μ €μˆ˜μ€€μ˜ ꡬ쑰 λ˜λŠ” 결정사항 등을 μ˜λ―Έν• λ•Œκ°€ λ§Žλ‹€. ν•˜μ§€λ§Œ μ‹€μ œλ‘œ ν•˜λŠ” κ±Έ 보면 μ•„ν‚€ν…μ²˜μ™€ 섀계λ₯Ό λ‚˜λˆ„λŠ” μ˜λ―ΈλŠ” μ˜λ―Έκ°€ μ—†λ‹€. ν•˜μ§€λ§Œ μ€‘μš”ν•œ 것은 μ•„ν‚€ν…μ²˜λ“  섀계든 κ·Έ ν–‰μœ„ 자체λ₯Ό ν–‰ν•˜λŠ” 것이닀. μ΅œκ·Όμ— λŠλ‚€κ±΄λ° μ‚¬λžŒμ΄ λ§Žμ•„μ§€κ³  ν•΄μ•Όν•˜λŠ” 일이 λ§Žμ•„ μ§€λ©΄ λ¬Όλ‘  λ‹Ήμ—°ν•˜κ²Œλ„ ν”„λ‘œμ νŠΈμ— λ§Žμ€ μ½”λ“œλ“€μ΄ μΆ”κ°€λœλ‹€. μΆ”κ°€λ˜μ—ˆλ‹€λŠ” λœ»μ€ 그만큼 봐야할 μ½”λ“œλ“€μ΄ λ§Žμ•„μ§„λ‹€λŠ” λœ»μ΄λ‹€. νŒ€μ›λ“€κ°„μ˜ 약속이 μžˆλ‹€κ³  해도 λ©”μ†Œλ“œλ‚˜, λ³€μˆ˜λ‚˜ 이름이 λͺ…ν™•ν•˜μ§€ μ•ŠμœΌλ©΄ μ–΄λ–€ μ˜λ„λ‘œ λ§Œλ“ κ±΄μ§€, μ–΄λ–»κ²Œ κ°€μ Έκ°€μ„œ μ¨μ•Όν•˜λŠ”μ§€ ν—·κ°ˆλ¦΄λ•Œκ°€ μžˆλ‹€. 이런 ν—·κ°ˆλ¦¬λŠ” λ‚΄μš©μ„ μ΄ν•΄ν•˜κΈ° μœ„ν•΄ μ‹œκ°„μ„ μ¨μ•Όν•˜λŠ” ν–‰μœ„λ₯Ό μ‚¬λžŒμ˜ 수만큼 λ°˜λ³΅ν•œλ‹€λŠ” 것은 그만큼 일의 효율이 λ–¨μ–΄μ§€κ²Œ λœλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— λ‚΄κ°€ μ§  μ½”λ“œλ₯Ό λ‹€λ₯Έμ‚¬λžŒμ΄ μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ, 보기 νŽΈν•˜κ²Œ μ œμž‘ν•˜λŠ” 것에 의미λ₯Ό 두고 아킀텍쳐λ₯Ό ꡬ좕해야 ν•œλ‹€λŠ” 것을 κ°•μ‘°ν–ˆλ˜ μ±•ν„°μ΄μ˜€λ‹€.

2μž₯

μ•„ν‚€ν…μ²˜λ₯Ό ν†΅ν•΄μ„œ ν•˜λ‚˜μ˜ κΈ°λŠ₯을 νŠΌνŠΌν•˜κ²Œ λ§Œλ“€λ©΄ μˆ˜μ •κ³Ό μœ μ§€λ³΄μˆ˜κ°€ νŽΈν•˜λ‹€λŠ” 것을 κ°•μ‘°ν•˜λŠ” μ±”ν„°μ˜€λ‹€. 이 μ±…μ—μ„œλ„ κ°•μ‘°ν•˜μ§€λ§Œ λͺ¨λ‘λ“€ μž‘μ—…(μ½”λ”©)을 ν•˜λ©΄μ„œ λ°”μ˜λ‹ˆκΉŒ λΌλŠ” 이유둜 μ„€κ³„ν•˜μ§€μ•Šκ³  빨리빨리 μž‘μ—…μ„ ν•˜λ©΄ μ•ˆλœλ‹€κ³  이야기 ν•œλ‹€. λ‚΄ κ°€μž₯ 졜근 κ²½ν—˜μœΌλ‘œ 짧은 μ‹œκ°„μ— μž‘μ—…μ„ ν•΄μ•Όν–ˆμ—ˆλ‹€. μ±…μ—μ„œ λ³Έκ²ƒμ²˜λŸΌ 곡책에 정리도 ν•˜λ©΄μ„œ ν•΄λ‹Ή ν΄λž˜μŠ€λŠ” μ΄λ ‡κ²Œ, ν•΄λ‹Ή λ©”μ†Œλ“œλŠ” μ΄λ ‡κ²Œ 미리 적어놓고 λ³΄λ©΄μ„œ 코딩을 ν•˜λ €κ³  ν–ˆμœΌλ‚˜ ν™•μ‹€νžˆ μ‹œκ°„μ΄ λΆ€μ‘±ν•΄μ§€λ©΄ λ‹€ λ¬΄μ‹œν•˜κ³  μ–΄λ–»κ²Œλ“  μ™„μ„±μ‹œν‚€λ €κ³  λ…Έλ ₯ν•˜κ²Œ λ˜μ—ˆλ‹€. 이런 λ‚΄ μžμ‹ μ„ λ°˜μ„±ν•˜μ§€λ§Œ κ³Όμ—° λ‹€μŒμ—” μ΄λ ‡κ²Œ ν•˜μ§€ μ•Šμ„ 수 μžˆμ„κΉŒ κ±±μ •λœλ‹€. μ²˜μŒμ—” μ˜€λž˜κ±Έλ €μ„œ κΈ‰ν•˜κ²Œ κΈ‰ν•˜κ²Œ ν–ˆμ§€λ§Œ 계속 μ—°μŠ΅ν•˜λ©΄ λΉ λ₯΄κ²Œ ν•  수 μžˆμ§€ μ•Šμ„κΉŒ μƒκ°ν•˜κΈ°λ„ ν•œλ‹€. μ²˜μŒμ΄λ‹ˆκΉŒ 잘 μ•ˆν’€λ Έλ‹€λ©΄ 계속 μ—°μŠ΅ν•΄μ„œ ꡬ쑰λ₯Ό 짜고 μž‘μ—…ν•˜λŠ” μͺ½μœΌλ‘œ λ…Έλ ₯ν•΄ 보아야 κ² λ‹€.

3μž₯

ꡬ쑰적 : gotoλ¬Έμž₯의 문제λ₯Ό μ œμ‹œ. μ œμ–΄νλ¦„μ˜ μ§μ ‘μ μœΌλ‘œ κ·œμΉ™μ„ λΆ€μ—¬ν–ˆλ‹€. (if, while ...) 객체지ν–₯ : μ œμ–΄νλ¦„μ˜ 간접적인 κ·œμΉ™μ„ λΆ€μ—¬ν•œλ‹€. ν•¨μˆ˜ν˜• : 할당문에 λŒ€ν•œ κ·œμΉ™ λΆ€μ—¬. μ΄λŸ¬ν•œ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ€ ν”„λ‘œκ·Έλž˜λ¨Έμ—κ²Œ κΆŒν•œμ„ λ°•νƒˆ, 즉, ν”„λ‘œκ·Έλž˜λ¨Έκ°€ ν•  수 μžˆλŠ” ν–‰μœ„λ“€μ„ μ œν•œν•˜λŠ” 방식이닀. 이 μ œν•œμ€ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ‹€μˆ˜ν•˜λŠ” ν–‰μœ„λ₯Ό λ°©μ–΄ν•˜κ±°λ‚˜, λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ 개발된 μ½”λ“œλ₯Ό λ³Όλ•Œ 보기 νŽΈν•˜κ²Œ ν•˜κΈ° μœ„ν•΄μ„œ μ΄λŸ¬ν•œ μ œν•œλ“€μ„ ν•œκ²Œ μ•„λ‹κΉŒ μƒκ°ν•œλ‹€. κ²°κ΅­ μ•„ν‚€ν…μ²˜λŠ” 코딩에 κ·œμΉ™μ„ λΆ€μ—¬ν•˜λŠ” ν–‰μœ„λΌκ³  μƒκ°ν•œλ‹€. μ—¬κΈ°μ„œ κ·œμΉ™μ€ κ°œλ°œμ— μ œν•œμ„ κ±°λŠ” 것이라 μƒκ°ν•œλ‹€. 이런거 μ €λŸ°κ±° ν•˜μ§€λ§κ³ , 이런 λ°©μ‹μœΌλ‘œ μ΅œλŒ€ν•œ κ°œλ°œν•΄λ³΄μž λΌλŠ”κ²ƒμ„ μ•„ν‚€ν…μ²˜λΌκ³  μƒκ°ν•œλ‹€. μ΄λŸ¬ν•œ νŒ¨λŸ¬λ‹€μž„μ€ κ²°κ΅­ μ•„ν‚€ν…μ²˜λ₯Ό μœ„ν•΄μ„œ ν”„λ‘œκ·Έλž˜λ¨Έμ—κ²Œ κΆŒν•œμ„ λΊμ–΄κ°€μ„œ κ·œμΉ™μ„ λ³Ό 수 μžˆλ„λ‘ μœ λ„ν–ˆλ˜κ²Œ μ•„λ‹κΉŒ μƒκ°ν•œλ‹€.

4μž₯

ν”„λ‘œκ·Έλž˜λ°μ€ μˆ˜ν•™λ³΄λ‹€λŠ” 과학에 가깝닀. μ™œ μž‘λ™λ˜λŠ” 것인지, 이게 λ¬Έμ œκ°€ μ—†λŠ” μ½”λ“œμΈμ§€λ₯Ό 증λͺ…ν•˜λŠ” 것은 μ‰½μ§€μ•Šλ‹€. κ·Έλž˜μ„œ κ³Όν•™μ²˜λŸΌ μ—„λ°€νžˆ λ‚΄μš©μ΄ μ‚¬μ‹€μž„μ„ 증λͺ…ν•˜λŠ” 방식이 μ•„λ‹ˆκ³ , μ„œμˆ μ΄ ν‹€λ ΈμŒμ„ 증λͺ…ν•˜λŠ” λ°©μ‹μœΌλ‘œ 동μž₯ν•œλ‹€. ν•΄λ‹Ή 둜직이 μ˜³λ‹€ κ°€ μ•„λ‹Œ, ν…ŒμŠ€νŠΈλ₯Ό ν•΄λ³΄λ‹ˆκΉŒ 버그가 μ—†μ—ˆλ‹€ μͺ½μœΌλ‘œ ν”„λ‘œκ·Έλž¨μ„ μ§œμ•Όν•  것 같아보인닀.

5μž₯

객체지ν–₯μ–Έμ–΄λŠ” 데이터와 ν•¨μˆ˜λ“€μ˜ 쑰합이라고 ν•  수 있고, μ‹€μ œ 세계 λͺ¨λΈλ§ν•˜λŠ” μƒˆλ‘œμš΄ 방법 이라고 이야기 ν•  수 μžˆλ‹€. OO에 λŒ€ν•΄ μ„€λͺ…은 쉽지 μ•Šμ§€λ§Œ, 객체지ν–₯이라고 뢈리기 μœ„ν•΄μ„œλŠ” μΊ‘μŠν™”/상속화/λ‹€ν˜•μ„± 이 보μž₯λ˜μ–΄μ•Ό ν•œλ‹€. μ§€κΈˆ C#μ—μ„œ μ“°λŠ” μΊ‘μŠν™”λŠ” 절재 μΊ‘μŠν™”κ°€ μ•„λ‹ˆλΌκ³  ν•œλ‹€. 이 μΊ‘μŠν™”λŠ” Cμ–Έμ–΄μ—μ„œ μ°Έ 잘 λ§Œλ“€μ–΄ μ‘Œμ—ˆλ‹€. 내뢀에 데이터λ₯Ό μ–΄λ– ν•œ λ°©μ‹μœΌλ‘œλ„ κ°€μ Έμ˜¬ 수 μ—†κΈ°λ•Œλ¬Έμ— 데이터λ₯Ό μ•ˆμ „ν•˜κ²Œ λ³΄ν˜Έν•  수 μžˆμ—ˆλ‹€. ν•˜μ§€λ§Œ C#으둜 올라였고, Java 같은 μ–Έμ–΄λ₯Ό 보면 μΊ‘μŠν™”λŠ” 거의 μ—†κ³  μ˜€λ²„λ‘œλ”©κ³Ό μ˜€λ²„λΌμ΄λ”©μ„ μ‚¬μš©ν•˜λ©΄μ„œ private 으둜 데이터λ₯Ό μˆ¨κ²¨μ€€λ‹€. 이 μˆ¨κ²¨μ£ΌλŠ” κΈ°λŠ₯ μžμ²΄κ°€ μΊ‘μŠν™”λ₯Ό κ°œλ°œμžμ—κ²Œ ν•  수 μžˆλŠ” κΆŒν•œμ„ μ€€λ‹€λŠ” λœ»μ΄λ‹€. μœ„μ—μ„œ νŒ¨λŸ¬λ‹€μž„μ€ κΆŒν•œμ„ κ°€μ Έκ°€λŠ” λ°©μ‹μœΌλ‘œ μ§„ν–‰λ˜μ—ˆμ§€λ§Œ 이뢀뢄에 μžˆμ–΄μ„œλŠ” κ°œλ°œμžμ—κ²Œ κΆŒν•œμ„ 쀌으둜써 μ‹€μˆ˜λ₯Ό ν•˜κ±°λ‚˜ κ·Έ κ·œμΉ™μ„ μ–΄κΈ°κ²Œ 되면 μΊ‘μŠν™”λ₯Ό ν•˜κΈ°κ°€ 쉽지 μ•Šμ•„μ§„λ‹€. 즉, κΆŒν•œμ„ λͺ¨λ‘ λΉΌμ•—μ•„ μžλ™ μΊ‘μŠν™”κ°€ μ•ˆλ˜κΈ° λ•Œλ¬Έμ— C#은 μΊ‘μŠν™”κ°€ 많이 λ§κ°€μ‘Œλ‹€λΌκ³  μ΄μ•Όν•œλ‹€. 상속은 C#은 μ λ‹Ήνžˆ ν•˜λŠ”λ° 졜근 언어쀑에 OOλ₯Ό κ°€μž₯ 잘 κ΅¬ν˜„λœ 것이 λ‹€ν˜•μ„±μ΄λΌκ³  ν•œλ‹€. 클래슀λ₯Ό 상속받고 ꡳ이 μƒˆλ‘œ λ§Œλ“€μ§€ μ•Šκ³  μ€‘λ³΅λ˜λŠ” λ‚΄μš©μ„ λ°”λ‘œ λΆ€λͺ¨ 객체둜 보내고, 상속받은 μžμ‹μ€ κ·Έ λ‚΄μš©μ„ μ‰½κ²Œ μˆ˜μ •ν•˜κΈ° λ•Œλ¬Έμ— λ‹€ν˜•μ„± ν•˜λ‚˜λŠ” μ™„λ²½ν•˜κ²Œ μž‘μ•˜λ‹€κ³  책은 μ£Όμž₯ν–ˆλ‹€.

6μž₯

ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž¨μ€ 정말 μƒˆλ‘œμ› λ‹€. λͺ¨λ“  λ‚΄μš©μ˜ ν•¨μˆ˜λ₯Ό 가져와 μž‘μ„±ν•˜κ³ , μƒˆλ‘œμš΄ λ‘œμ§μ€ 거의 μ—†μ—ˆλ‹€. 이미 μžˆλŠ” ν•¨μˆ˜λ₯Ό μ—°κ²°ν•΄μ„œ μƒˆλ‘œμš΄ ν•¨μˆ˜λ₯Ό μ œμž‘ν•˜λŠ” 방식이 λ„ˆλ¬΄ μ‹ κΈ°ν–ˆλ‹€.