[Clean Architecture] ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ํด๋ฆฐ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. # ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ƒ์„ฑ ๋ฐฐ๊ฒฝ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ˆ˜ํ•™์ ์œผ๋กœ ์ฆ๋ช…ํ•ด ๋ณด๋ ค๋Š” ๊ณผ์ •์—์„œ ์ƒ๊ฒจ๋‚ฌ๋‹ค. ์ฆ๋ช… ๊ณผ์ •(์ˆœ์ฐจ ๊ตฌ๋ฌธ-์—ด๊ฑฐ๋ฒ•, ๋ถ„๊ธฐ-์—ด๊ฑฐ๋ฒ•, ๋ฐ˜๋ณต-๊ท€๋‚ฉ๋ฒ•)์„ ํ†ตํ•ด ์œ ํด๋ฆฌ๋“œ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ goto๋ฌธ์ด ๋ชจ๋“ˆ ๋ถ„ํ•ด๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ๋ถ„ํ•ดํ•˜๋Š” ๊ณผ์ •์— ๋ฐฉํ•ด๊ฐ€ ๋˜๋Š”์ ์„ ํŒŒ์•… goto๋ฌธ์— ๋Œ€ํ•œ ํ•ด๋กœ์›€์„ ๋‹ด์€ ๊ธ€์„ ์žก์ง€์— ์‹ค์—ˆ๋‹ค. # ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ๊ณ ์ˆ˜์ค€์˜ ๋ชจ๋“ˆ์„ ๊ธฐ๋Šฅ์ ์œผ๋กœ ์ €์ˆ˜์ค€์˜ ๋ชจ๋“ˆ๋กœ, ์ €์ˆ˜์ค€์˜ ๋ชจ๋“ˆ์€ ์ €์ˆ˜์ค€์˜ ํ•จ์ˆ˜๋กœ ๋ถ„ํ•ดํ•˜๋Š”๋ฐ ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด ๊ธฐ๋Šฅ๋‹จ์œ„๋กœ ๋ถ„ํ•ดํ•  ์ˆ˜ ์žˆ๊ณ , ์ด ๊ธฐ๋Šฅ์œผ๋กœ ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ œํ•œ๋œ ์ œ์–ด ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ๋ถ„ํ•ด๋œ ๊ธฐ๋Šฅ์€ ์ฆ๋ช… ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค. # ํ…Œ์ŠคํŠธ ํ…Œ์ŠคํŠธ..

[Clean Architecture] ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์•ˆ๋…•ํ•˜์„ธ์š” ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด ๋ณด๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๋ ›์ธ ๊ณ  # ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€? ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ ๊ธฐ๋ฐ˜์€ ๋žŒ๋‹ค ๊ณ„์‚ฐ๋ฒ•์œผ๋กœ ๋ฐœ๋ช…๋˜์—ˆ๋‹ค. ํฐ ํŠน์ง•์œผ๋กœ๋Š” ๊ฐ€๋ณ€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. (ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋„ ๋‹ค์Œ์— ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ณ  ๋ณด์ถฉํ•ด์•ผ๊ฒ ๋‹ค) # ์•„ํ‚คํ…์ฒ˜์—์„œ ๋ฐ”๋ผ๋ณธ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์•„ํ‚คํ…์ฒ˜๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ฐ€๋ณ€๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ ์„ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•œ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์„๊นŒ? ๊ฐ€๋ณ€ ๋ณ€์ˆ˜๋ฅผ ์“ฐ๋ฉด race condition, dead lock, concurrent update ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์•„ํ‚คํ…์ฒ˜๋Š” ๋™์‹œ์„ฑ ๋ฌธ์ œ์— ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์•ผ ํ•˜๋Š”๋ฐ ์Šค๋ ˆ๋“œ์™€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์ƒํ™œ์—์„œ๋„ ์„ค๊ณ„ํ•œ ์‹œ์Šคํ…œ์ด ๊ฐ•๊ฑดํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ถˆ๋ณ€์„ฑ์ด ์‹คํ˜„..

[iOS/Swift]Test Code๋ฅผ ์ž‘์„ฑํ•ด๋ณด์ž - Network test๋ฅผ ์œ„ํ•œ mock

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. test code์—์„œ F.I.R.S.T ์›์น™์ค‘์— ํ•˜๋‚˜๋Š” Independent - ํ…Œ์ŠคํŠธ๋Š” ๋…๋ฆฝ์ ์ด์—ฌ์•ผ ํ•˜๋ฉฐ ์˜์กดํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์‹ค์ œ๋กœ ๋งŽ์ด ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋“œ๋Š” network๋ฅผ ํ†ตํ•ด request๋ฅผ ํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ฅธ response๋ฅผ ๋ฐ›๋„๋ก ์ž‘์„ฑํ•œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ networkํ†ต์‹ ์€ ์™ธ๋ถ€์˜ ์˜์—ญ์œผ๋กœ ๋‚˜๋‰˜๊ฒŒ ๋˜์–ด ํ…Œ์ŠคํŠธ ์‹œ ๋ถ„๋ฆฌํ•˜์—ฌ์•ผ ํ•˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค. test code์—์„œ ์‹ค์ œ๋กœ network ํ†ต์‹ ์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์‹ค์ œ๋กœ ํ˜ธ์ถœ๋˜๋‹ค ๋ณด๋‹ˆ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์–ด ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๊ณ , ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ• ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์ž˜๋ชป๋œ request๋กœ ์„œ๋ฒ„์— ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ test code์—์„œ ๋ถ„๋ฆฌํ•˜๊ณ , ๊ธฐ๋Šฅ ์ฝ”๋“œ์—..

iOS/Swift 2023. 10. 26. 00:48
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ