Skip to content

๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด ๋ฆฌํŒฉํ„ฐ๋งย #960

Description

@doabletuple

๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด๋ฅผ Repository๋ณ„๋กœ ์ ์ง„์ ์œผ๋กœ ๋ฆฌํŒฉํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐ๊ฒฝ

ํ˜„์žฌ UI ๋ ˆ์ด์–ด๊ฐ€ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด์˜ ์„ธ๋ถ€ ๊ตฌํ˜„์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด์˜ ์ฑ…์ž„ ์ค‘ ์ผ๋ถ€๋ฅผ ๋Œ€์‹  ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด์˜ ํ•จ์ˆ˜๋“ค์ด ์˜ˆ์™ธ๋ฅผ ๊ทธ๋Œ€๋กœ ๋˜์ง€๋ฉฐ, UI ๋ ˆ์ด์–ด๊ฐ€ ์ด๋ฅผ try-catchํ•˜๊ณ  HTTP ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด UI ๋ ˆ์ด์–ด๋กœ ์ „ํŒŒ๋˜๊ธฐ ์‰ฝ๊ณ , ๋™์ผํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐ ๋กœ๊น… ๊ด€๋ จ ์ฝ”๋“œ๊ฐ€ ํ˜ธ์ถœ๋ถ€๋งˆ๋‹ค ๋ฐ˜๋ณต๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌํŒฉํ„ฐ๋ง ๋ฐฉํ–ฅ

  • ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด๋Š” ์˜ค๋ฅ˜๋ฅผ ๊ทธ๋Œ€๋กœ ๋˜์ง€์ง€ ์•Š๊ณ , ์„ฑ๊ณต/์‹คํŒจ ๊ฒฐ๊ณผ๋ฅผ Outcome<T, F> ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
    • Outcome.Success<T>: ์„ฑ๊ณต ์‹œ ๋ฐ˜ํ™˜ํ•  ๋ฐ์ดํ„ฐ (e.g. Success<List<Course>>, Success<Unit>)
    • Outcome.Failure<F>: ๋„๋ฉ”์ธ ์—๋Ÿฌ (sealed interface๋กœ ์ •์˜) (e.g. UnauthorizedUser, DuplicateCourseName)
  • UI ๋ ˆ์ด์–ด๋Š” ๋ฐ์ดํ„ฐ ๊ด€๋ จ try-catch๋‚˜ HTTP ์ฝ”๋“œ ํ•ด์„ ๋“ฑ์„ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ , Outcome์— ๋”ฐ๋ผ ์ ์ ˆํ•œ UI ์ž‘์—…๋งŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋Œ€ ํšจ๊ณผ

  • ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด UI ๋ ˆ์ด์–ด๋กœ ์ „ํŒŒ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋ฐ ๋กœ๊น… ๋“ฑ์˜ ์ฝ”๋“œ ์ค‘๋ณต์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.
  • Outcome.Failure<F>์˜ ํƒ€์ž…์„ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋„๋ฉ”์ธ ์—๋Ÿฌ๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

Metadata

Metadata

Assignees

Labels

androidrefactor๊ธฐ์กด ๊ธฐ๋Šฅ ์ˆ˜์ •

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions