profile
πŸ»β€β„οΈ

[Clean Architecture] 16μž₯ 독립성

ν•œ 쀄 μš”μ•½ : 쒋은 μ•„ν‚€ν…νŠΈλŠ” μ‹œμŠ€ν…œμ˜ μœ μŠ€μΌ€μ΄μŠ€ / 운영 / 개발 / 배포λ₯Ό μ§€μ›ν•΄μ•Όν•œλ‹€. λ˜ν•œ λ›°μ–΄λ‚œ μ•„ν‚€ν…νŠΈλΌλ©΄ μ΄λŸ¬ν•œ 변경을 μ˜ˆμΈ‘ν•˜μ—¬ 큰 무리 없이 λ°˜μ˜ν•  수 μžˆλ„λ‘ λ§Œλ“€μ–΄μ•Ό ν•œλ‹€.ν–‰μœ„λ₯Ό λͺ…ν™•νžˆ ν•˜κ³  μ™ΈλΆ€λ‘œ λ“œλŸ¬λ‚΄λ©°, μ‹œμŠ€ν…œμ˜ μ˜λ„λ₯Ό μ•„ν‚€ν…μ²˜ μˆ˜μ€€μ—μ„œ μ•Œμ•„λ³Ό

2022λ…„ 5μ›” 11일
Β·
0개의 λŒ“κΈ€

[Clean Architecture] 15μž₯ μ•„ν‚€ν…μ²˜λž€?

ν•œ 쀄 μš”μ•½ : μ•„ν‚€ν…μ²˜μ˜ ꢁ극적인 λͺ©ν‘œλŠ” μ‹œμŠ€ν…œμ˜ 수λͺ…κ³Ό κ΄€λ ¨λœ λΉ„μš©μ€ μ΅œμ†Œν™”ν•˜κ³ , ν”„λ‘œκ·Έλž˜λ¨Έμ˜ 생산성은 μ΅œλŒ€ν™”ν•˜λŠ”λ°μ— μžˆλ‹€.μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜λŠ” κ°œλ°œνŒ€μ΄ μ‹œμŠ€ν…œμ„ μ‰½κ²Œ κ°œλ°œν•  수 μžˆλ„λ‘ ν•΄μ•Όν•œλ‹€.μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜λŠ” μ‰½κ²Œ 배포할 수 μžˆλ„λ‘ λ§Œλ“€μ–΄μ•Ό ν•œλ‹€. 배포 λΉ„μš©μ΄

2022λ…„ 5μ›” 11일
Β·
0개의 λŒ“κΈ€

[Clean Architecture] 14μž₯ μ»΄ν¬λ„ŒνŠΈ κ²°ν•©

μ»΄ν¬λ„ŒνŠΈ μ˜μ‘΄μ„± κ·Έλž˜ν”„μ— μˆœν™˜μ΄ μžˆμ–΄μ„œλŠ” μ•ˆλœλ‹€.λ™μΌν•œ μ†ŒμŠ€μ½”λ“œλ₯Ό μ—¬λŸΏμ΄ κ±΄λ“œλ¦¬λ©΄, μ„œλ‘œμ˜ μ½”λ“œμ— μ˜μ‘΄μ„±μ΄ 생길 수 μžˆλ‹€. μ΄λ•Œ, ν•΄κ²°μ±…μœΌλ‘œλŠ” 두가지가 μžˆλ‹€.μ€‘κ°„κ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œ ν”νžˆ μ‚¬μš©μ›”-λͺ©μ— 각자 μ½”λ”©, 금 - 톡합 및 λΉŒλ“œμž₯점 : λΉ λ₯Έ ν”Όλ“œλ°± 및 μ„œλ‘œ μ‹ κ²½μ•ˆμ“°κ³ 

2022λ…„ 5μ›” 11일
Β·
0개의 λŒ“κΈ€
post-thumbnail

[Clean Architecture] 13μž₯ μ»΄ν¬λ„ŒνŠΈ 응집도

μž¬μ‚¬μš© λ‹¨μœ„λŠ” 릴리슀 λ‹¨μœ„μ™€ κ°™λ‹€μ•„ν‚€ν…μ²˜μ˜ κ΄€μ μ—μ„œ 단일 μ»΄ν¬λ„ŒνŠΈλŠ” 응집성 높은 클래슀&λͺ¨λ“ˆλ‘œ κ΅¬μ„±λ˜μ–΄μ•Ό ν•œλ‹€.즉, κ³΅μœ ν•˜λŠ” μ€‘μš”ν•œ ν…Œλ§ˆλ‚˜ λͺ©μ μ΄ 같은 것끼리 κ΅¬μ„±λ˜μ–΄μ•Όν•œλ‹€λŠ” λœ»μ΄λ‹€.λ”°λΌμ„œ, ν•˜λ‚˜μ˜ μ»΄ν¬λ„ŒνŠΈλ‘œ 묢인 ν΄λž˜μŠ€μ™€ λͺ¨λ“ˆμ€ 버전 λ²ˆν˜Έκ°€ κ°™κ³ , λ™μΌν•œ 릴리슀둜 μΆ”

2022λ…„ 5μ›” 11일
Β·
0개의 λŒ“κΈ€

[Clean Architecture] 12μž₯ μ»΄ν¬λ„ŒνŠΈ

μ»΄ν¬λ„ŒνŠΈ : μ‹œμŠ€ν…œμ˜ ꡬ성 μš”μ†Œλ‘œ 배포할 수 μžˆλŠ” κ°€μž₯ μž‘μ€ λ‹¨μœ„μž˜ μ„€κ³„λœ μ»΄ν¬λ„ŒνŠΈλŠ” λ°˜λ“œμ‹œ λ…λ¦½μ μœΌλ‘œ 배포가 κ°€λŠ₯ν•΄μ•Ό ν•˜λ©°, λ…λ¦½μ μœΌλ‘œ 개발 κ°€λŠ₯ν•œ λŠ₯λ ₯을 κ°–μΆ°μ•Όν•œλ‹€.개발 μ΄ˆμ°½κΈ°μ—λŠ” ν”„λ‘œκ·Έλž¨μ΄ λ‘œλ“œλ  μ£Όμ†Œλ₯Ό 직접 μ œμ–΄ν•΄μ•Ό ν–ˆκΈ°μ—, λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ΄ 점점 λŠ˜μ–΄λ‚¬λ‹€.재배치

2022λ…„ 5μ›” 11일
Β·
0개의 λŒ“κΈ€

[Clean Architecture] 11μž₯ DIP: μ˜μ‘΄μ„± μ—­μ „ 원칙

μ˜μ‘΄μ„± μ—­μ „ μ›μΉ™μ΄λž€, μ˜μ‘΄μ„±μ΄ 좔상에 μ˜μ‘΄ν•˜κ³  ꡬ체적인 것에 μ˜μ‘΄ν•˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€λŠ” 원칙이닀.μ΄λŠ”, 100ν”„λ‘œ μ§€μΌœμ§€κΈ°λŠ” νž˜λ“€λ‹€. 예λ₯Ό λ“€μ–΄, JAVAμ—μ„œ string은 ꡬ체적인 ν΄λž˜μŠ€μ΄λ‚˜, μ•ˆμ •ν•˜κΈ° λ•Œλ¬Έμ— μΆ”μƒν΄λž˜μŠ€λ‘œ λ§Œλ“€μ§€ μ•ŠλŠ”λ‹€.λ”°λΌμ„œ, μ˜μ‘΄μ„±μ„ ν”Όν•΄μ•Ό ν•˜λŠ” 것

2022λ…„ 5μ›” 11일
Β·
0개의 λŒ“κΈ€
post-thumbnail

[Clean Architecture] 10μž₯ ISP: μΈν„°νŽ˜μ΄μŠ€ 뢄리 원칙

User1은 op1λ©”μ„œλ“œλ§Œ, User2은 op2λ©”μ„œλ“œλ§Œ, User3은 op3λ©”μ„œλ“œλ§Œ μ‚¬μš©ν•œλ‹€κ³  κ°€μ •ν•˜μž.op2λ₯Ό μˆ˜μ • 재배포λ₯Ό ν•  경우, User1κ³Ό User3은 op2λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŒμ—λ„ λΆˆκ΅¬ν•˜κ³ , 재 컴파일 ν›„ λ‹€μ‹œ λ°°ν¬ν•΄μ•Όν•œλ‹€.μ΄λŠ” μ˜μ‘΄μ„± 문제인데, λΆˆν•„μš”ν•œ 의쑴

2022λ…„ 5μ›” 11일
Β·
0개의 λŒ“κΈ€

[Clean Architecture] 9μž₯ LSP: λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙

μžλ£Œν˜•Sκ°€ μžλ£Œν˜•T의 ν•˜μœ„ν˜•μ΄λΌλ©΄ ν•„μš”ν•œ ν”„λ‘œκ·Έλž¨μ˜ 속성(μ •ν™•μ„±, μˆ˜ν–‰ν•˜λŠ” 업무 λ“±)의 λ³€κ²½ 없이 μžλ£Œν˜•T의 객체λ₯Ό μžλ£Œν˜•S의 객체둜 ꡐ체(μΉ˜ν™˜)ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€λŠ” 원칙이닀.BilingλΌλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλŠ” λ‹¨μˆœνžˆ calcFee()λΌλŠ” λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•œλ‹€κ³  ν•˜μž.Bil

2022λ…„ 4μ›” 5일
Β·
0개의 λŒ“κΈ€

[ ν—·κ°ˆλ €μ„œ μ μ–΄λ†“λŠ” ] UML λ‹€μ΄μ–΄κ·Έλž¨

클래슀의 κ΄€κ³„λŠ” 7가지 정도가 μ‘΄μž¬ν•œλ‹€.슈퍼(λΆ€λͺ¨)ν΄λž˜μŠ€μ™€ μ„œλΈŒ(μžμ‹)ν΄λž˜μŠ€κ°„μ˜ 상속관계λ₯Ό λ‚˜νƒ€λ‚Έλ‹€. λΆ€λͺ¨ν΄λž˜μŠ€λŠ” μžμ‹ν΄λž˜μŠ€λ₯Ό μΌλ°˜ν™”ν•œ 방식이고, μžμ‹ν΄λž˜μŠ€λŠ” λΆ€λͺ¨ν΄λž˜μŠ€λ₯Ό κ΅¬μ²΄ν™”ν•œ 방식이라고 μƒκ°ν•˜λ©΄ λœλ‹€.상속은 슈퍼클래슀의 ν•„λ“œ 및 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•΄ κ΅¬μ²΄ν™”ν•˜κ³ , ν•„μš”ν• 

2022λ…„ 4μ›” 2일
Β·
0개의 λŒ“κΈ€

[Clean Architecture] 8μž₯ OCP: 개방-폐쇄 원칙

개방-폐쇄 원칙은 ν™•μž₯μ—λŠ” μ—΄λ € μžˆμ–΄μ•Όν•˜κ³ , λ³€κ²½μ—λŠ” λ‹«ν˜€ μžˆμ–΄μ•Ό ν•œλ‹€.μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜κ°€ ν›Œλ₯­ν•˜λ‹€λ©΄, λ³€κ²½λ˜λŠ” μ½”λ“œμ˜ 양이 κ°€λŠ₯ν•œ ν•œ μ΅œμ†Œν™” 될 것이닀. 이상적인 λ³€κ²½λŸ‰μ€ 0 이닀.λ³€κ²½λ˜λŠ” μš”μ†Œλ₯Ό μ μ ˆν•˜κ²Œ λΆ„λ¦¬ν•˜κ³  (SRP), 이듀 μ‚¬μ΄μ˜ μ˜μ‘΄μ„±μ„ μ²΄κ³„ν™”ν•˜λ©΄(DIP

2022λ…„ 3μ›” 19일
Β·
0개의 λŒ“κΈ€

[Clean Architecture] 7μž₯ SRP: 단일 μ±…μž„ 원칙

SRP 단일 μ±…μž„ 원칙은 단 ν•˜λ‚˜μ˜ 일만 ν•΄μ•Όν•œλ‹€λŠ” 원칙이 μ•„λ‹ˆλ‹€.β†’ ν•˜λ‚˜μ˜ λͺ¨λ“ˆμ€ 였직 ν•˜λ‚˜μ˜ 앑터에 λŒ€ν•΄μ„œλ§Œ μ±…μž„μ Έμ•Ό ν•œλ‹€.κ·Έλ¦Ό 7.1을 보면, Employee ν΄λž˜μŠ€μ— calculatePay(), reportHours(), save() 이 μ„Έ 개의 λ©”μ„œλ“œκ°€ μžˆλ‹€.

2022λ…„ 3μ›” 19일
Β·
0개의 λŒ“κΈ€

[Clean Architecture] 6μž₯ ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°

ν΄λ‘œμ €λ₯Ό μ΄μš©ν•œ μ œκ³±ν•¨μˆ˜λ₯Ό μ„€λͺ…ν•œλ‹€.μ—¬κΈ°μ„œ νŠΉμ§•μ€, μžλ°”μ™€ λ‹€λ₯΄κ²Œ , κ°€λ³€λ³€μˆ˜λ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 점이닀.μ•„ν‚€ν…μ²˜λŠ” λ³€μˆ˜μ˜ 가변성을 μ—Όλ €ν•œλ‹€.κ·Έ μ΄μœ λŠ” κ²½ν•© 쑰건, κ΅μ°©μƒνƒœ 쑰건, λ™μ‹œ μ—…λ°μ΄νŠΈ λ¬Έμ œκ°€ λͺ¨λ‘ κ°€λ³€ λ³€μˆ˜λ‘œ 인해 λ°œμƒν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.경합쑰건 / κ΅μ°©μƒνƒœ 쑰건

2022λ…„ 3μ›” 19일
Β·
0개의 λŒ“κΈ€

[Clean Architecture] 5μž₯ 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°

\--- μˆœμ„œ λ§žμΆ”κΈ° μœ„ν•œ μž„μ‹œ μΆœκ°„ ---

2022λ…„ 3μ›” 19일
Β·
0개의 λŒ“κΈ€

[Clean Architecture] 4μž₯ ꡬ쑰적 ν”„λ‘œκ·Έλž˜λ°

λ°μ΄ν¬μŠ€νŠΈλŠ” μˆ˜ν•™μ μœΌλ‘œ 증λͺ…ν•˜λ €κ³  ν–ˆλ‹€. 세가지 방법을 μ΄μš©ν•΄μ„œ 증λͺ…ν•˜λ €κ³  ν–ˆλŠ”λ°,순차 ꡬ문 (열거법)λΆ„κΈ°λ°˜λ³΅ - 귀납법 μ‚¬μš©μ΄ μ„Έ 개λ₯Ό μ΄μš©ν•΄μ„œ ν”„λ‘œκ·Έλž˜λ°μ„ μœ ν΄λ¦¬λ“œ κ³„μΈ΅κ΅¬μ‘°λ‘œ λ§Œλ“€λ €κ³  ν–ˆλ‹€.goto문의 ν•΄λ‘œμ›€μ„ μ•Œλ Έλ‹€. κ·ΈλŸ¬λ©΄μ„œ ν”„λ‘œκ·Έλž˜λ° μ„±μž₯을 μ΄λ€˜λ‹€. gotoλ¬Έ

2022λ…„ 3μ›” 19일
Β·
0개의 λŒ“κΈ€

[Clean Architecture] 3μž₯ νŒ¨λŸ¬λ‹€μž„ κ°œμš”

goto문이 ν•΄λ‘­λ‹€λŠ” 것을 νŒŒμ•…ν•˜κ³ , if/then/elseλ‚˜ do/while/until ꡬ쑰둜 λŒ€μ²΄ν–ˆλ‹€.ꡬ쑰적 ν”„λ‘œκ·Έλž˜λ°μ€ μ œμ–΄νλ¦„μ˜ 직접적인 μ „ν™˜μ— λŒ€ν•΄ κ·œμΉ™μ„ λΆ€κ³Όν•œλ‹€.객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ€ μ œμ–΄νλ¦„μ˜ 간접적인 μ „ν™˜μ— λŒ€ν•΄ κ·œμΉ™μ„ λΆ€κ³Όν•œλ‹€.ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ€ ν• λ‹Ήλ¬Έ

2022λ…„ 3μ›” 19일
Β·
0개의 λŒ“κΈ€

[Clean Architecture] 2μž₯ 두 가지 κ°€μΉ˜μ— λŒ€ν•œ 이야기

λͺ¨λ“  μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œμ€ 두가지 κ°€μΉ˜λ₯Ό μ œκ³΅ν•œλ‹€ - ν–‰μœ„μ™€ κ΅¬μ‘°ν–‰μœ„ - μ†Œν”„νŠΈμ›¨μ–΄μ— λ‹΄κΈ΄ μ΄ν•΄κ΄€κ³„μžμ˜ μš”κ΅¬μ‚¬ν•­μ΄ ν–‰μœ„λ₯Ό κ΅¬ν˜„ν•˜λŠ” 것이 ν”„λ‘œκ·Έλž˜λ¨Έκ°€ ν•΄μ•Όν•˜λŠ” μ „λΆ€κ°€ μ•„λ‹˜κ΅¬μ‘° - μ•„ν‚€ν…μ²˜ν™•μž₯성이 μ€‘μš”ν•˜λ‹€.λ³€κ²½ν•˜κΈ° μ‰¬μ›Œμ•Ό ν•œλ‹€μ‹œμŠ€ν…œμ˜ ν˜•νƒœμ™€ μš”κ΅¬μ‚¬ν•­μ˜ ν˜•νƒœκ°€ λ§žμ•„μ•Όν•œλ‹€.κΈ΄κΈ‰

2022λ…„ 3μ›” 19일
Β·
0개의 λŒ“κΈ€

[Clean Architecture] 1μž₯ 섀계와 μ•„ν‚€ν…μ²˜λž€?

μ•„ν‚€ν…μ²˜μ™€ μ„€κ³„λŠ” 크게 λ‹€λ₯΄μ§€ μ•Šλ‹€. λ‹€λ₯΄λ‹€κΈ° 보단 연속성을 가지고 μ΄μ–΄μ Έμžˆλ‹€κ³  λ³΄λŠ” 것이 μ˜³λ‹€.μ €μˆ˜μ€€μ˜ 세뢀사항(섀계)둜 이루어진 κ³ μˆ˜μ€€μ˜ 결정사항(μ•„ν‚€ν…μ²˜)이닀.μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜μ˜ λͺ©ν‘œλŠ” ν•„μš”ν•œ μ‹œμŠ€ν…œμ„ λ§Œλ“€κ³  μœ μ§€λ³΄μˆ˜ ν•˜λŠ” 데 νˆ¬μž…λ˜λŠ” 인λ ₯을 μ΅œμ†Œν™”ν•˜λŠ” 데 μžˆλ‹€

2022λ…„ 3μ›” 19일
Β·
0개의 λŒ“κΈ€

[Leetcode] Roman to integer

ν•΄λ‹Ή 문제의 μ˜ˆμ™ΈλŠ”, 4(IV),9(IX), 40(XL)κ³Ό 같은 μ•žμ— μž‘μ€ μˆ˜κ°€ λ‚˜μ˜€κ³  두 개의 문자둜 λ˜μ–΄μžˆλŠ” 수 λ“€μ΄μ—ˆλ‹€. κ·Έλž˜μ„œ λ‚˜λŠ” dictμ•ˆμ— 넣어버렸닀. 그리고, ν•΄λ‹Ή 쑰건이 λ§Œμ‘±ν•˜λ©΄, 수λ₯Ό 빼기둜 ν–ˆλ‹€. 2λ₯Ό κ³±ν•œκ±΄ κ·Έ μœ„μ— ν•œλ²ˆ 넣어쀬기 λ•Œλ¬Έμ—, λ‘λ²ˆ λΉΌ

2022λ…„ 2μ›” 15일
Β·
0개의 λŒ“κΈ€

[Leetcode] Palindrome Number

λ¨Όμ € for문을 μ΄μš©ν•΄ μ€‘κ°„κΉŒμ§€λ§Œ, μˆ«μžκ°€ λ°μΉΌμ½”λ§ˆλ‹ˆκ°€ 되면 λ§žμ„κ±°λΌκ³  μƒκ°ν–ˆλ‹€. κ·Έλž˜μ„œ 어렡지 μ•Šκ²Œ 풀이λ₯Ό μž‘μ„±ν–ˆλ‹€. κ·ΈλŸ¬λ‚˜ 속도가 μ€‘κ°„μ΄ν•˜μ˜ 속도가 λ‚˜μ™€μ„œ λ‹€μ‹œ 곡뢀λ₯Ό ν•΄λ³΄κΈ°λ‘œ ν–ˆλ‹€.이 μ½”λ“œλŠ” λ¬΄μ‹œλ¬΄μ‹œν•˜κ²Œ 좩격적인 μ½”λ“œμ˜€λ‹€. fot문을 λŒλ¦¬λŠ”κ²Œ μ•„λ‹Œ λ‹¨μˆœνžˆ x::-

2022λ…„ 2μ›” 15일
Β·
0개의 λŒ“κΈ€

[Leetcode] TwoSum

twosum in leetcode by python3

2022λ…„ 2μ›” 13일
Β·
0개의 λŒ“κΈ€