Giter Club home page Giter Club logo

minisuperapp's Introduction

MiniSuperApp

๐Ÿ“ฑย ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

  • ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋Š” ์นด๋“œ ๋“ฑ๋ก ๋ฐ ๊ธˆ์•ก ์ถฉ์ „์„ ์ฃผ์ œ๋กœ ๋งŒ๋“  ๋ฐ๋ชจ์•ฑ์ž…๋‹ˆ๋‹ค.
  • ์˜์กด์„ฑ๊ณผ ๋ชจ๋“ˆํ™”์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์ดํ•ด๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ํ…œํ”Œ๋ฆฟ์„ ์ œ๊ณตํ•˜๋Š” ModernRIBs ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • Combine์„ ํ™œ์šฉํ•ด ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ์˜ ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • Transport ํŒ€, Finance ํŒ€, Profile ํŒ€, Utility ํŒ€์œผ๋กœ ๋ถ„์—…์„ ํ•œ๋‹ค๋Š” ๊ฐ€์ •์œผ๋กœ ๋ชจ๋“ˆํ™”๋ฅผ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • XCTest๋ฅผ ์ด์šฉํ•ด Unit Test, UI Test๋ฅผ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์Šˆํผ ํƒ์‹œํ™”๋ฉด์—์„œ ์ถฉ์ „ ์Šˆํผ ํŽ˜์ดํ™”๋ฉด์—์„œ ์ถฉ์ „ ์Šˆํผ ํŽ˜์ดํ™”๋ฉด์—์„œ ์นด๋“œ ์ถ”๊ฐ€
2024-01-1412 29 55-ezgif com-video-to-gif-converter 2024-01-1412 30 30-ezgif com-video-to-gif-converter 2024-01-1412 30 57-ezgif com-video-to-gif-converter

ModernRIBs๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ 

  • ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด, DI(+DIP), UnitTest์— ๋Œ€ํ•œ ๊ณต๋ถ€๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ž๋ฃŒ๋ฅผ ์ฐพ๋˜ ์ค‘ RIBs์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ  RIBs์˜ ๊ฒฝ์šฐ Template๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์–ด ๋งค์šฐ ํ™•์‹คํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋™์•ˆ ๊ณ„์† ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋˜ ์˜์กด์„ฑ, ๋ชจ๋“ˆํ™”์— ๋Œ€ํ•ด ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„ RIBs๋ฅผ ์„ ์ • ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ModernRIBs์˜ ๊ฒฝ์šฐ Rx๋ฅผ ๊ฑท์–ด๋‚ด๊ณ  Combine์œผ๋กœ ๋Œ€์ฒดํ•œ RIBs ํŒจํ„ด์ธ๋ฐ ํ…œํ”Œ๋ฆฟ๋„ ์ž˜ ๋˜์–ด์žˆ๊ณ  Rx๋Š” ํ˜„์žฌ Split it์ด๋ผ๋Š” ์•ฑ์„ ํ†ตํ•ด ํ•™์Šต ๋ฐ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์žˆ์–ด Combine์„ ํ•จ๊ป˜ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•ด ModernRIBs๋กœ ์„ ์ • ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

ModernRIBs์˜ ๊ตฌ์กฐ์™€ ์—ญํ• 

  • RIBs๋Š” Router, Interactor, Builder๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ViewController๋Š” ํ•„์š”์— ๋”ฐ๋ผ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์—†๋Š” ๊ฒฝ์šฐ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ํ•˜๋‚˜์˜ Router, Interactor, Builder์˜ ๋ฌถ์Œ์„ Riblet์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ RIBs์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฐœ๋…์€ Riblet์„ Flow์— ๋”ฐ๋ผ attach, detachํ•˜๋ฉฐ Riblet์„ ์žฌํ™œ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • Router : Builder๋ฅผ ํ†ตํ•ด ์ธ์Šคํ„ด์Šค๋˜๋ฉฐ Interator์—๊ฒŒ Listener๋ฅผ ํ†ตํ•ด ํ•˜์œ„ Riblet๋“ค์˜ attach์™€ detach๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. RIBs์—์„œ ๊ผญ ์ง€์ผœ์•ผํ•˜๋Š” ์›์น™ ์ค‘ ํ•˜๋‚˜๋Š” ์ƒ์œ„ Riblet์—์„œ attach ์‹œํ‚จ ํ•˜์œ„ Riblet์€ ์ฑ…์ž„์ง€๊ณ  ์ƒ์œ„ Riblet์ด detach ์‹œ์ผœ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์œผ๋กœ ํ•ด๋‹น ์›์น™์„ ์ง€ํ‚ด์œผ๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ViewController : ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ View์˜ ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. Interactor๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ๋ฐ›์œผ๋ฉฐ ์ธํ„ฐ๋ ‰์…˜์ด ์ผ์–ด๋‚˜๋ฉด PresentableListener๋ฅผ ํ†ตํ•ด Interactor์—๊ฒŒ ์‹ ํ˜ธ๋ฅผ ์ „๋‹ฌํ•ด ์ค๋‹ˆ๋‹ค.
  • Interactor : ViewController์—๊ฒŒ ์‹ ํ˜ธ๋ฅผ ๋ฐ›์•„ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋กœ์ง์œผ๋กœ ์ธํ•ด ํ•˜์œ„ View๊ฐ€ attach๋œ๋‹ค๋ฉด Router์—๊ฒŒ ์‹ ํ˜ธ๋ฅผ ์ „๋‹ฌํ•ด attach๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ๋˜๊ณ , Interator๊ฐ€ ์†ํ•œ Riblet์ด detach๋˜์–ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด RibletListener๋ฅผ ํ†ตํ•ด ์ƒ์œ„ Riblet์— ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด detach๋™์ž‘์ด ์ผ์–ด๋‚˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • Builder : Riblet์„ ์ƒ์„ฑ์‹œํ‚ค๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ƒ์œ„ Riblet์ด ํ•˜์œ„ Riblet์„ ์ƒ์„ฑํ•  ๋•Œ Builder๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ƒ์„ฑ์„ ํ•˜๊ฒŒ๋˜๋ฉฐ, ์ด๋กœ ์ธํ•ด ํ•˜์œ„ Riblet์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋“ค์„ Dependency๋กœ ๋งŒ๋“ค์–ด ์ „๋‹ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
Router Interactor Builder
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-01-14 แ„‹แ…ฉแ„’แ…ฎ 1 08 21 แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-01-14 แ„‹แ…ฉแ„’แ…ฎ 1 08 45 แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-01-14 แ„‹แ…ฉแ„’แ…ฎ 1 09 00

๋ชจ๋“ˆํ™”๋ฅผ ์ง„ํ–‰ํ•œ ์ด์œ 

  • ๊ฐœ์ธ ๋˜๋Š” ์Šคํ„ฐ๋””๋ฅผ ํ†ตํ•ด ์•ฑ์„ ๋งŒ๋“ค ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ํŒ€์„ ๋‚˜๋ˆ ์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฑฐ์˜ ์—†์—ˆ๋Š”๋ฐ ์‹ค์ œ ํ˜„์—…์—์„œ๋Š” ์—ฌ๋Ÿฌ ํŒ€์„ ๋‚˜๋ˆ ์„œ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ฑฐ๋‚˜ ๊ฐ๊ฐ ๋งก์€ ์—ญํ• ์ด ํ™•์‹คํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ํŒ€๋งˆ๋‹ค ์†Œ์Šค์ฝ”๋“œ ์˜์กด์„ฑ์„ ๋Š์–ด์„œ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ž˜์„œ ํ•˜๋‚˜์˜ ์•ฑ์„ ๋งŒ๋“ค๋ฉด์„œ Transport ํŒ€, Finance ํŒ€, Profile ํŒ€, Util ํŒ€์œผ๋กœ ๋‚˜๋ˆ ์ ธ์„œ ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๊ณ  ๊ฐ ํŒ€์€ ๋‹ค๋ฅธ ํŒ€์˜ ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์–ด์„  ์•ˆ๋œ๋‹ค๋Š” ์ „์ œํ•˜์— ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“ˆ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“ˆ๋กœ ๋‚˜๋ˆ”์œผ๋กœ์จ ๊ฐ ํŒ€๋งˆ๋‹ค ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋“ค์€ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๊ณ  ํŒ€๋ณ„๋กœ ๋นŒ๋“œ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์‰ฝ๊ณ  ํ…Œ์ŠคํŠธ์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„๋„ ํ˜„์ €ํžˆ ์ค„์–ด๋“ ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ ๋ชจ๋“ˆํ™”๋ฅผ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋”๋ฏธ ์„œ๋ฒ„์™€ ๋กœ์ปฌ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ 

  • ๋”๋ฏธ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š” ์•„์ง ์„œ๋ฒ„๊ฐ€ ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  Request์™€ Response๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜๊ณ  ์ถ”ํ›„ ์„œ๋ฒ„๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค๋ฉด ๋ฐ”๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ๋ฐœํ•˜๋Š” ํ™˜๊ฒฝ์œผ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์‹ค์ œ ํ˜„์—…์—์„œ ์„œ๋ฒ„์˜ ๊ตฌํ˜„์ด ๋๋‚˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์•ฑ์„ ๋งŒ๋“ค๊ณ  ํ…Œ์ŠคํŠธ ํ•ด์•ผ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด์„œ ์ด๋Ÿฌํ•œ ๊ฐ€์ •์„ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋กœ์ปฌ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š” ํ…Œ์ŠคํŠธ๋Š” ์™ธ๋ถ€ ํ™˜๊ฒฝ์— ์˜ํ–ฅ์„ ๋ฐ›์œผ๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋กœ์ปฌ ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ํ˜„์žฌ๋Š” ๋”๋ฏธ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ตณ์ด ๋กœ์ปฌ ์„œ๋ฒ„๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ํฌ๊ฒŒ ๋ฌธ์ œ๋Š” ์—†์œผ๋‚˜ ์ถ”ํ›„ ๋”๋ฏธ ์„œ๋ฒ„๋ฅผ ๊ฑท์–ด๋‚ด๊ณ  ์‹ค์ œ ์„œ๋ฒ„๋ฅผ ์ ์šฉํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฏธ๋ฆฌ ๋กœ์ปฌ ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

ํŠน์ • Riblet๋งŒ Interface๋ฅผ ์ž‘์„ฑํ•œ ์ด์œ 

  • ์—ฌ๋Ÿฌ ํŒ€์—์„œ ๊ฐ๊ฐ์˜ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ ๋‹ค๋Š” ์ „์ œํ•˜์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • Finance ํŒ€์˜ Topup, AddPaymentMethod Riblet์˜ ๊ฒฝ์šฐ๋Š” Transport ํŒ€์—์„œ๋„ ์‚ฌ์šฉ์„ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— Interface๋ฅผ ํ™œ์šฉํ•ด ์˜์กด์„ฑ์„ ์—ญ์ „์‹œํ‚ด์œผ๋กœ์จ ๊ฒฐํ•ฉ์„ ๋Š์Šจํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์žฌํ™œ์šฉ์„ฑ์„ ๋†’์ด๊ณ  ๋นŒ๋“œ ์‹œ๊ฐ„์„ ์ค„์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • Topup Riblet : View๊ฐ€ ์—†๋Š” Riblet์œผ๋กœ ์นด๋“œ ์„ ํƒ, ๊ธˆ์•ก ์ถฉ์ „ Flow๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋กœ์ง Riblet์ž…๋‹ˆ๋‹ค.
    • AddPaymentMethod Riblet : ์ƒˆ๋กœ์šด ์นด๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” Riblet์ž…๋‹ˆ๋‹ค.

Combine Scheduler๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ 

  • Network ๊ด€๋ จํ•ด์„œ ๊ธฐ์กด์—๋Š” DispathQueue๋ฅผ ํ†ตํ•ด UI ๊ด€๋ จ ์ž‘์—…์„ ๋ฉ”์ธ ์“ฐ๋ ˆ๋“œ์—์„œ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์–ด์„œ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ง„ํ–‰์ด ๋˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ์ด๊ฒƒ์€ Testableํ•œ ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐ ํ•ฉ๋‹ˆ๋‹ค.
  • ์™œ๋ƒํ•˜๋ฉด ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋ถˆํ™•์‹ค์„ฑ์ด ์ƒ๊ฒจ์„œ ๋™์ผํ•œ ํ…Œ์ŠคํŠธ์—ฌ๋„ ์‹คํŒจํ•  ์ˆ˜ ์žˆ๋Š” ํ™•๋ฅ ์ด ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ ๊ทธ๋ž˜์„œ Combine Schedulers๋ฅผ ํ†ตํ•ด ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ๋Š” ๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ๋ฐ”๊ฟ”์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
  • Test ํ™˜๊ฒฝ์—์„œ๋งŒ Combine์ด ์ œ๊ณตํ•˜๋Š” ImmediateScheduler๋ฅผ ์‚ฌ์šฉํ• ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์—ฌ๋Ÿฌ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ํŽธํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด Combine Schedulers ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋„์ž…ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Unit Test, UI Test ์ž‘์„ฑ

  • Mini Super App์„ ๋งŒ๋“ค๋ฉด์„œ ๊ฐ€์žฅ ๊ณ ๋ คํ–ˆ๋˜ ๋ถ€๋ถ„์ด Test ํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ ์˜€์Šต๋‹ˆ๋‹ค.
  • ์•ฑ์Šค์ฟจ, ์• ํ”Œ ์•„์นด๋ฐ๋ฏธ๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ํ˜‘์—… ๊ฒฝํ—˜์„ ํ•˜๋ฉด์„œ Test ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•˜๊ณ  ๋” ๋น ๋ฅธ ์†๋„๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์™„์„ฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ๋งŽ์ด ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.
  • Quick / Nimble์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ํ”„๋ ˆ์ž„์›Œํฌ์ธ XCTest๋ฅผ ํ†ตํ•ด Test๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋Š” ๊ฒฝํ—˜์„ ๋งŽ์ด ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ๋” ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ XCTest๋ฅผ ํ™œ์šฉํ•˜์—ฌ Unit Test, UI Test๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ’กย ํ•™์Šตํ•˜๋ฉด์„œ ๋Š๋‚€ ์ 

  • RIBs, VIPER, TCA์™€ ๊ฐ™์€ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์€ ์ฒ˜์Œ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ต์ˆ™ํ•ด์ง€๋Š”๋ฐ ์‹œ๊ฐ„์ด ๊ฝค ๊ฑธ๋ฆฌ๋Š” ํŽธ์ด์ง€๋งŒ MVC, MVVM ํŒจํ„ด์— ๋น„ํ•ด ๊ฐ ์—ญํ• ๋งˆ๋‹ค ๊ตฌ์กฐ๊ฐ€ ํ™•์‹คํ•˜๊ณ  ๋ช…ํ™•ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทœ๋ชจ๊ฐ€ ์ปค์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŽ๊ณ  ์—ญํ• ์ด ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜๋ˆ„์–ด์ง„ ์„œ๋น„์Šค์ผ ๊ฒฝ์šฐ์—๋Š” ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋›ฐ์–ด๋‚  ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.
  • UnitTest, UITest๋ฅผ ์ž‘์„ฑํ•ด๋ด„์œผ๋กœ์จ Testableํ•œ ์ฝ”๋“œ๋ž€ ๋ฌด์—‡์ธ๊ฐ€์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด, ๋ชจ๋“ˆํ™”์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ธฐ ์ „์—๋Š” ํ˜‘์—…์„ ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ฝ”๋“œ ์ถฉ๋Œ์ด ๊ฝค ๋งŽ์ด ๋ฐœ์ƒํ•˜์˜€๊ณ , ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋”๋ผ๋„ ์ฝ”๋“œ๊ฐ€ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋กœ ๊ณ ์ƒ์„ ํ–ˆ๋˜ ๊ฒฝํ—˜์ด ์žˆ๋Š”๋ฐ Mini Super App์„ ๋งŒ๋“ค์–ด๋ด„์œผ๋กœ์จ ์กฐ๊ธˆ ๋” ์ฝ”๋“œ๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด ๋‹ต๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

minisuperapp's People

Contributors

jincode93 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.