๊ฐ๋ฐ์ ์คํฐ๋ ํตํฉ ์ปค๋ฎค๋ํฐ ํ๋ซํผ โ๋ชจ๊ฐ์ฝโ์ ๋๋ค.
- ์ํ๋ ์คํฐ๋๋ฅผ ๋ง๋ค๊ณ ์ฐธ์ฌํ ์ ์์ต๋๋ค.
- ๊ด์ฌ์๋ ์ธ์ด, ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๊ณ ๋ฅผ ์ ์์ต๋๋ค.
- ํจ๊ปํ๋ ์คํฐ๋์๊ณผ ์ฑํ ์ ํ ์ ์์ต๋๋ค.
S005_๊น๋ฒ์ | S026_์ ์๋ฏผ | S030_์ค๊ตญ์ | S043_์ด์ฃผํ |
@beomsoo0 | @sominn9 | @oguuk | @juhoon-lee |
๋ก๊ทธ์ธ, ํ์๊ฐ์ | ์คํฐ๋ ๋ชฉ๋ก(์ ๋ ฌ, ํํฐ๋ง) | ์คํฐ๋ ์ฐธ์ฌ |
---|---|---|
์คํฐ๋ ์์ฑ | ์ฑํ | ํ๋กํ |
Why 5์ฃผ๋ผ๋ ์งง์ ๊ธฐ๊ฐ ์์ ์ฑ์คํ ์ด ์ถ์๋ผ๋ ํ๊ฒ์ ์ก์๊ณ , ์ดํ ์ ํ์ ์ถ๊ฐ์ ์ผ๋ก developํ๊ฒ ๋๋ฉด ์๋ฒ์ ๋์์ธ์ ๊ฐ๋ณ์ ์ธ ์ํฉ์ด ๋ฒ์ด์ง ์ ์์ ๊ฒ์ด๋ผ ์๊ฐํ์ต๋๋ค. ๋น์ฆ๋์ค ๋ก์ง์ ์ฑ์ ํต์ฌ์ ์ธ ํํธ๋ก ๋ณด๊ณ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ์ ์๋ ๊ตฌ์กฐ ์ค๊ณ๋ฅผ ๊ณ ๋ฏผํ์๊ณ , Clean-Architecture์ ์ฒ ํ์ด ์ ํฌ์ ๋ชฉ์ ๊ณผ ์ผ์นํ๋ค๊ณ ํ๋จํ์ฌ ์ฑํํ์์ต๋๋ค.
Result
- View - ViewModel - UseCase - Repository - DataSource๋ก ๋ ์ด์ด๋ฅผ ๋๋๊ณ ๋ชจ๋ ์์กด์ฑ์ด outer์์ inner๋ฅผ ํฅํ๋๋ก ๊ตฌํํ์์ต๋๋ค.
- ์๋ฒ์์ ์จ ๋ฐ์ดํฐ์ ๋ชจ๋ธ๊ณผ ์ฑ ๋ด์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ๋ชจ๋ธ์ ๋ถ๋ฆฌํ์ฌ ์๋ฒ์ ๋ณ๊ฒฝ์ ์ ์ฐํ๊ฒ ๋์ฒํ ์ ์์์ต๋๋ค.
- Repository ํจํด์ ์ด์ฉํด DataSource๋ฅผ ์บก์ํํ์ต๋๋ค.
- ์ฑ์ ํต์ฌ์ ์ธ ๋ก์ง์ธ UseCase๋ฅผ ์์ ๊ธฐ๋ฅ์ ๋จ์๋ก ๋๋์ด ๋จ์ผ ์ฑ ์ ์์น์ ์ค์ํ๋๋ก ๊ตฌํํ์ฌ ์ฌ์ฌ์ฉ์ฑ์ ๋์ฌ ์์ฐ์ฑ์ ๋์ผ ์ ์์์ต๋๋ค.
- ๊ณ์ธต๊ณผ ๋ชจ๋์ ์ญํ ์ด ๋ช ํํ๊ฒ ๋ถ๋ฆฌ๋์ด ์ฝ๋ ๊ฐ๋ ์ฑ, ์ฌ์ฌ์ฉ์ฑ, ํ ์คํธ ์ฝ๋ ์์ฑ ์ ๋ฆฌ์์ค ์ ๊ฐ์ผ๋ก ์ด์ด์ก์ต๋๋ค.
Why
์ฌ์ฉ์ ์ ๋ ฅ ๋ฐ ๋ทฐ์ ๋ก์ง๊ณผ ๋น์ฆ๋์ค์ ๊ด๋ จ๋ ๋ก์ง์ ๋ถ๋ฆฌํ๊ธฐ ์ํด MVVM ํจํด์ ์ฑํํ๊ณ ๋ฐ์ดํฐ ํ๋ฆ์ ๋จ๋ฐฉํฅ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ViewModel์ Input๊ณผ Output์ผ๋ก ๋ชจ๋ธ๋งํ์์ต๋๋ค.
Result
- Input์ ๋ํ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ Output์ ๋ด์์ ๋ณด๋ผ ๋ RxTraits๋ฅผ ์ฌ์ฉํ์ฌ Thread-Safeํ๊ฒ UI๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์์ต๋๋ค.
- ViewController์ ์์กดํ์ง ์๊ณ ํ ์คํธ ์ฉ์ดํ ๊ตฌ์กฐ์ ViewModel์ ๊ตฌ์ฑํ ์ ์์์ต๋๋ค.
Why
ํ๋ฉด ์ ํ ๋ก์ง์ ViewController์์ ๋ถ๋ฆฌํ๊ธฐ ์ํด Coordinator ํจํด์ ๋์ ํ์ต๋๋ค.
Result
- ์ฝ๋๋ค์ดํฐ๋ก ํ๋ฉด ์ ํ ๋ก์ง์ด ๋ชจ์ด๊ฒ ๋๋ฉด์ ์ ์ฒด ํ๋ฆ์ ํ์ ํ๊ธฐ ์ฌ์์ก์ต๋๋ค.
- ์์กด์ฑ ์ฃผ์ ์ฝ๋๋ฅผ ์ฝ๋๋ค์ดํฐ๋ก ๋ถ๋ฆฌํ ์ ์์์ต๋๋ค.
- ViewController๋ฅผ ๋ ๊ฐ๋ณ๊ณ ์ฝ๊ฒ ์ฌ์ฌ์ฉํ ์ ์๊ฒ ๋์์ต๋๋ค.
Why
ํ๋ฉด ์ ํ์ ๋ด๋นํ๋ Coordinator์์ ์์กด์ฑ ์ฃผ์ ์ ์ญํ ์ ๋ถ๋ฆฌํ๊ธฐ ์ํด DIContainer๋ฅผ ๋์ ํ์ต๋๋ค.
Result
- ์์กด์ฑ ์ฃผ์ ์ ๋ํ ๋ณด์ผ๋ฌ ํ๋ ์ดํธ ์ฝ๋๊ฐ ๊ฐ์ํ์ต๋๋ค.
- ์์กด์ฑ ์ฃผ์ ์ ํ ๊ณณ์์ ๊ด๋ฆฌํ ์ ์๊ฒ ๋์์ต๋๋ค.
Why
์๋ฒ ๊ฐ๋ฐ์์์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๊ธฐ ์ํด Firebase๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ๊ทธ๋ฌ๋ Firebase SDK์ ๋ํ ์์กด๋๋ฅผ ๋ฎ์ถ๊ณ ์ REST API๋ฅผ ์ด์ฉํ์ฌ ๋คํธ์ํฌ ํต์ ์ ์งํํ์ต๋๋ค.
Result
- ํ๊ฐ์ง ์ก์ ์ ๋ํ ๋ค์ค ๋คํธ์ํฌ ํธ์ถ ์ฒ๋ฆฌ๋ฅผ Data Layer์์ ์งํํ์ฌ ๋ค๋ฅธ Layer์ ์ํฅ์ ๋ผ์น์ง ์๋๋ก ๊ตฌํํ์์ต๋๋ค.
- ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์์กด์ฑ์ ๋ฎ์ถ๊ธฐ ์ํด ์์ฒด ๋คํธ์ํฌ ๋ ์ด์ด๋ฅผ ๊ตฌํํ์๊ณ , ํ ํ๋ฆฟํ๋ ์ฝ๋ ๋๋ถ์ Endpoint์ ์ฌ์ฌ์ฉ์ฑ์ด ์ฌ๋ผ๊ฐ์ต๋๋ค.
- Firebase REST API ํต์ ์ผ๋ก ์ธํ ๋ณต์กํ ์์ฒญโ์๋ต์ ๋ง๋ DTO๋ฅผ ๋ชจ๋ธ๋งํ์์ต๋๋ค.
Why
ํ์
์ด๋ฐ ๋ฐ๋ณต๋๋ .xcodeproj
ํ์ผ์ ์ถฉ๋๋ก ์์ฐ์ฑ ์ ํ๋ฅผ ๋๊ผ๊ณ , ์๋์ ์ธ ํด๊ฒฐ์ ์์กดํ๊ธฐ๋ณด๋ค ์๋ํ ์ํฌ ์ ์๋ ํ๋ก์ ํธ ๊ด๋ฆฌ ํด์ ํ์์ฑ์ ๋๊ผ์ต๋๋ค.
Result
.xcodeproj
ํ์ผ conflict ๋ฌธ์ ํด๊ฒฐ๋ก ์์ฐ์ฑ ์ ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ต๋๋ค.- ์์ฒด Animation, Image Cacher, Network Layer๋ฅผ ๋ชจ๋ํํ์ฌ ๊ด๋ฆฌํ ์ ์์์ต๋๋ค.
๋ฐ์น ์ ๋๋ฉ์ด์ | ์ค์ผ๋ ํค ์ ๋๋ฉ์ด์ |
---|---|
Why
๊ฐ๋ฐ์๋ค์ ์ํ ํ๋ซํผ์ด๋ผ๋ ์ฑ์ ์ ์ฒด์ฑ์ UI์ ์ผ๋ก ํํํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๋์ ์์ ์ด ์งํ๋๊ณ ์์์ ์ฌ์ฉ์์๊ฒ ์๋ฆฌ๊ธฐ ์ํด ์ปค์คํ ์ ๋๋ฉ์ด์ ์ ๊ตฌํํ์ต๋๋ค.
Result
๋น๋๊ธฐ ์์ ์ด ์งํ๋๋ ๋์ ํ๋ฉด์ Skeleton View๋ฅผ ๋ฐฐ์นํ์ฌ UX๋ฅผ ํฅ์์ํฌ ์ ์์์ต๋๋ค.
- ์ด์๋ฅผ ์ธ๋ถ์ ์ธ ๋จ์๋ฅผ ์๊ฒ ๊ฐ์ ธ๊ฐ๋ ค ๋
ธ๋ ฅํ์ฌ, ํจ์จ์ ์ธ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์งํํ ์ ์์์ต๋๋ค.
- 6์ฃผ๊ฐ ์ฝ 900๊ฐ์ commit
- 6์ฃผ๊ฐ ์ฝ 420๊ฐ์ Issue ๋ฐ PR ํด๊ฒฐ
- ํ๊ท 10๊ฐ ์ด์์ PR comment
- ๋ชจ๋ ๋ธ๋์น์ 2๋ช ์ด์์ด approve๋ฅผ ํด์ผ PR์ด merge๋๋๋ก ์ค์ ํ์์ต๋๋ค.
- ์ ํ ๋ฐฑ๋ก๊ทธ๋ฅผ ์คํ๋ฆฐํธ ๊ธฐ๊ฐ๋ง๋ค ์คํ๋ฆฐํธ ๋ฐฑ๋ก๊ทธ๋ก ํ ๋นํ์ฌ ์ ์์ผํ๊ฒ ๊ฐ๋ฐ์ ์งํํ์์ต๋๋ค.
- ์ด์๋ง๋ค Estimate์ ๊ธฐ๋ฐ์ผ๋ก ์ผ์ ์ ์ฐ์ถํ์ฌ ๊ธฐ๊ฐ ๋ด ์ ํ์ ๋ฐฐํฌํ ์ ์์์ต๋๋ค.
- ์นธ๋ฐ ๊ธฐ๋ฅ์ ์ ๊ทน ํ์ฉํ์ฌ ํ์ ๊ฐ์ ์์ ํํฉ์ ๊ณต์ ํ ์ ์์์ต๋๋ค.
- Github ์ฑ์ ํ์ฉํด Repository์ ์ฐ๋์ ํตํด ์์ ํํฉ์ ๊ณต์ ํ๊ณ ์ปค๋ฎค๋์ผ์ด์ ์ ๋ ํจ์จ์ ์ผ๋ก ๊ฐ์ ธ๊ฐ ์ ์์์ต๋๋ค.
- Picker ์ฑ์ ํ์ฉํด Scrum ์งํ์๋ฅผ ์ ์ ํ์ฌ ์งํํ์์ต๋๋ค.
- StyleShare์ code-convention์ ๋ชจ๊ฐ์ฝ ํ์ ์คํ์ผ์ ๋ง์ถฐ ์ปค์คํ ํ์ฌ ์ฌ์ฉํ์ต๋๋ค.
- Code-convention ์ค์๋ฅผ ์ํด SwiftLint๋ฅผ ์ ์ฉํ์์ต๋๋ค.
- Git-hooks๋ฅผ ์ด์ฉํด code, commit convention์ ์งํค์ง ๋ชปํ ๋ด์ฉ์ commit๋์ง ์๋๋ก ์๋ํํ์์ต๋๋ค.
- ์คํ๋ฆฐํธ ๋ฏธํ ์ ํตํด, ์คํ๋ฆฐํธ ๊ธฐ๊ฐ๋์ ์ ๋ฌด ๋ชฉ๋ก์ ์ค์ ํ๊ณ ๊ณต์ ํ์์ต๋๋ค.
- ๋งค์ผ ์์นจ ๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ์์ ์ค๋์ ๊ธฐ๋ถ๊ณผ ์ ๋ฌด ์ํ๋ฅผ ๊ณต์ ํ๋ ์ํต ์๊ฐ์ ๊ฐ์ก์ต๋๋ค.
- ๋ชจ๋ ์คํฌ๋ผ์ ์์ธํ๊ฒ ๋ฌธ์ํํ์์ต๋๋ค.
- Issue, PR, Scrum Template์ ๋ง๋ค์ด ๋ฌธ์ํ๋ฅผ ํ์ต๋๋ค. ์ํค