[ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„] SOLID๋ž€?

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP)์ด๋ž€? *๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๊ฐ์ฒด๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ํ‘œํ˜„ํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ๊ฐ์ฒด ๋‚ด๋ถ€์— ์„ ์–ธ๋œ ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋Š” *ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์œผ๋กœ ์ถ”์ƒํ™”, ์บก์Šํ™”, ์ƒ์†์„ฑ, ๋‹คํ˜•์„ฑ์ด๋ผ๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ง•๋“ค๋กœ ์ธํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์œ ์—ฐํ•˜๊ณ  ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ทœ๋ชจ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. *ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋ž€? https://j-su2.tistory.com/127 [ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„] ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋ž€? ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„(Programming Paradigm)์ด๋ž€? ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ด€์ ์„ ๊ฐ–๊ฒŒ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ํ”„๋กœ๊ทธ๋žจ์„ ์ƒ j-..

CS/Design Pattern 2023. 5. 23. 21:56
[Design Pattern] DDD(๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„)๋ž€?

DDD(Domain-Driven Design)๋ž€? ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์„ค๊ณ„ ๋ฐฉ๋ฒ•๋ก ์ธ ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„๋Š” ๋„๋ฉ”์ธ ํŒจํ„ด์„ ์ค‘์‹ฌ์— ๋†“๊ณ  ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋„๋ฉ”์ธ์„ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„ํ•ด ๋‚˜๊ฐ€๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. DDD๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ๋ณ„๋กœ ๋‚˜๋ˆ„์–ด ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ์‹ ๋‹จ์ˆœํžˆ ๊ธฐ์ˆ ์ ์ธ ์‚ฌํ•ญ๋งŒ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ์‹ค์ œ ๋„๋ฉ”์ธ์ธ ์š”๊ตฌ ์‚ฌํ•ญ์— ์ค‘์‹ฌ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์˜ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•œ ์„ค๊ณ„ ๋„๋ฉ”์ธ์ด๋ž€? ์‹ค์ œ ์„ธ๊ณ„์—์„œ ์‚ฌ๊ฑด์ด ๋ฐœ์ƒํ•˜๋Š” ์ง‘ํ•ฉ์œผ๋กœ DDD์—์„œ ๋งํ•˜๋Š” ๋„๋ฉ”์ธ์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‡ผํ•‘๋ชฐ์—์„  ์ด์šฉ์ž๋“ค์ธ ๊ณ ๊ฐ ๋„๋ฉ”์ธ, ์†๋‹˜๋“ค์ด ์ฃผ๋ฌธํ•˜๋Š” ๋„๋ฉ”์ธ ๋“ฑ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์€ ์œ ์‚ฌํ•œ ์—…๋ฌด์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์•ž์„œ DDD๋Š” ์ด๋Ÿฌํ•œ ๋น„์ฆˆ๋‹ˆ์ฆˆ ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ๊นŠ์€ ์ดํ•ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ..

CS/Design Pattern 2022. 10. 26. 17:36
[ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„] ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋ž€?

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„(Programming Paradigm)์ด๋ž€? ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ด€์ ์„ ๊ฐ–๊ฒŒ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ํ”„๋กœ๊ทธ๋žจ์„ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๊ฐ์ฒด๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฐ˜๋ฉด์—, ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ : ์ƒํƒœ ๊ฐ’์„ ์ง€๋‹ˆ์ง€ ์•Š์€ ํ•จ์ˆ˜ ๊ฐ’๋“ค์˜ ์—ฐ์†์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์„ ์–ธํ˜•๊ณผ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Declarative Programming)์ด๋ž€ "๋ฌด์—‡์„" ํ’€์–ด๋‚ด๊ฐ€๋Š”๊ฐ€์— ์ง‘์ค‘ํ•˜๋Š” ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋ฉฐ, "ํ”„๋กœ๊ทธ๋žจ์€ ํ•จ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒƒ์ด๋‹ค"๋ผ๋Š” ๋ช…์ œ๊ฐ€ ๋‹ด๊ฒจ ์žˆ๋Š” ํŒจ๋Ÿฌ๋‹ค์ž„์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด JavaScript๋กœ ์ž์—ฐ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์—์„œ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ์„๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. const ret = [1, 2, 3, 4..

CS/Design Pattern 2022. 10. 1. 16:19
[Design Pattern] TDD(ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ)

TDD๋ž€? TDD๋ž€ Test Driven Development์˜ ์•ฝ์ž๋กœ 'ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ'์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณต ํ…Œ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ ์ž‘์€ ๋‹จ์œ„์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์งง์€ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ์˜ ๋ฐ˜๋ณต์— ์˜์กดํ•˜๋Š” ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์ด๋ฉฐ ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก  ์ค‘ ํ•˜๋‚˜์ธ eXtream Programming(XP)์˜ 'Test-First'๊ฐœ๋…์— ๊ธฐ๋ฐ˜์„ ๋‘” ๋‹จ์ˆœํ•œ ์„ค๊ณ„๋ฅผ ์ค‘์š”์‹œํ•ฉ๋‹ˆ๋‹ค. **eXtream Programming(XP) : ๋ฏธ๋ž˜์— ๋Œ€ํ•œ ์˜ˆ์ธก์„ ์ตœ๋Œ€ํ•œ ํ•˜์ง€ ์•Š๊ณ  ์ง€์†์ ์œผ๋กœ ํ”„๋กœํ† ํƒ€์ž…์„ ์™„์„ฑํ•˜๋Š” ์• ์ž์ผ ๊ธฐ๋ฐฉ๋ฒ•๋ก  ์ค‘ ํ•˜๋‚˜๋กœ, ์ถ”๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์ด ์ƒ๊ธฐ๋”๋ผ๋„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Œ TDD์˜ ์ ˆ์ฐจ TDD์—์„œ๋Š” ์ œํ’ˆ์˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์œ„ํ•œ ์ฝ”๋“œ์™€ ๋ณ„๊ฐœ..

CS/Design Pattern 2022. 7. 4. 20:19
[ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„] OOP์™€ FP

OOP๋ž€? OOP๋Š” Object Oriented Programming์˜ ์•ฝ์ž๋กœ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. class์™€ object์— ๊ธฐ๋ฐ˜ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„(๋””์ž์ธ ํŒจํ„ด)์œผ๋กœ, ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ผ๋ฆฌ ๋ฌถ์–ด์„œ class๋ฅผ ํ˜•์„ฑํ•˜๊ณ  ๊ทธ ์•ˆ์—์„œ object instance๋ฅผ ๋งŒ๋“ค์–ด ํ”„๋กœ๊ทธ๋žจ์„ ๋””์ž์ธ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ์ž๋ฐ”๊ฐ€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ํ‘œํ˜„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ๊ฐ์ฒด ๋‚ด๋ถ€์— ์„ ์–ธ๋œ ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹ OOP์˜ ์žฅ์  ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ๋ฅ ์„ ๋†’์ด๊ณ  ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›€ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด์กด์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ(์บก์Šํ™”) OOP์˜ ํŠน์ง• 4๊ฐ€์ง€ ์บก์Šํ™”(Encapsulation) ์บก์Šํ™”๋Š” ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ๋กœ์ง์€ ๊ฐ์ถ”๊ณ  ์™ธ๋ถ€์—๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ์•ˆ์ •..

CS/Design Pattern 2022. 7. 3. 21:55
[Design Pattern] GoF(Gang of Four) ๋””์ž์ธ ํŒจํ„ด ์ข…๋ฅ˜

๋””์ž์ธ ํŒจํ„ด์ด๋ž€? ๋””์ž์ธ ํŒจํ„ด์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์˜ ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์—์„œ ๊ณตํ†ต์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ž์ฃผ ์“ฐ์ด๋Š” ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•œ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์˜ ์„ธ๋ถ„ํ™”๋œ ์—ญํ• ์ด๋‚˜ ๋ชจ๋“ˆ๋“ค ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ ๋ฐฉ์‹์„ ์„ค๊ณ„ํ• ๋•Œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ์ „ํ˜•์ ์ธ ํ•ด๊ฒฐ ๋ฐฉ์‹์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋””์ž์ธ ํŒจํ„ด์€ ํ•œ ํŒจํ„ด์— ๋ณ€ํ˜•์„ ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์–ด๋– ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜๋ฉด ๋‹ค๋ฅธ ํŒจํ„ด์œผ๋กœ ๋ณ€ํ˜•๋˜๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค. *ํŒจํ„ด : ๋น„์Šทํ•˜๊ฑฐ๋‚˜ ๋™์ผํ•œ ์–‘์‹ ๋˜๋Š” ์œ ํ˜•๋“ค์ด ๋ฐ˜๋ณต๋˜์–ด ๋‚˜ํƒ€๋‚จ, ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ์ฑ…๋„ ๋™์ผํ•œ ์œ ํ˜•์ด๋‚˜ ์–‘์‹์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์ฐพ์Œ ๋””์ž์ธ ํŒจํ„ด์˜ ์žฅ๋‹จ์  ์žฅ์  : ๊ฐœ๋ฐœ์˜ ํšจ์œจ์„ฑ, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ์šด์šฉ์„ฑ์ด ๋†’์•„์ง€๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์˜ ์ตœ์ ํ™”๊ฐ€ ๊ฐ€๋Šฅ(๋ถˆํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„ ๋ฐฉ์ง€) ๋‹จ์  : ์ดˆ๊ธฐ ํˆฌ์ž ๋น„์šฉ์˜ ๋ถ€๋‹ด ๋””์ž์ธ ํŒจํ„ด์˜ ๊ตฌ์„ฑ ์š”์†Œ context..

CS/Design Pattern 2022. 6. 28. 21:11