์ ํ ๋๋ฒจ๋กํผ ์์นด๋ฐ๋ฏธ์์ ์งํํ ๋๋ฒ์งธ ํ๋ก์ ํธ๊ฐ ๋์ด๋ฌ๋ค. ๋๋ฒ์งธ ํ๋ก์ ํธ๋, ์ ๋ง ๋๋๊ฒ ๋ง์ ํ๋ก์ ํธ์๋ค. ์ด์ฉ๋ค๊ฐ ๋ด๊ฐ ์ฝ๊ฐ์ ๋ฆฌ๋..?๋ฅผ ํ๊ฒ ๋์๋๋ฐ ๊ทธ ๊ณผ์ ์์ ๋ด๊ฐ ๋ชปํ๋ ๊ฒ์ ๊ธฐ์ค์ผ๋ก ์์ผ๋ก๋ ์ด๋ป๊ฒ ํด์ผํ ์ง ์ ๋ฆฌํด๋ณด๊ธฐ๋ก ํ๋ค. ์ฝ๊ฐ,,, ๋์ค์ ํน์ ๋ ๋ด๊ฐ github ๊ด๋ฆฌ๋ฅผ ๋งก๊ฒ ๋์์๋, ๋บด๋จน์ง ์๊ณ ๋ชจ๋ ๊ฒ์ ํ๋? ํ๋ ์ฒดํฌ๋ฆฌ์คํธ!๋ก ํ์ฉ๋ ํฌ์คํ ์ด๋ค.
๐ Github Repo ์์ฑํ๊ธฐ
์ง์ง ์ด์ฉ๋ค๊ฐ ์ฑ๊ฐ๋ฐ 2๊ฐ์์ฐจ์ธ ๋ด๊ฐ ๋ฆฌ๋๋ฅผ ๋งก๊ฒ ๋์ด์, Team repo ๊ด๋ฆฌ๋ ์ด์ฉ๋ค๊ฐ! ๋ด๊ฐ ํ๊ฒ ๋์๋ค. Git์ ์ด๋ ๊ฒ ์ ๋๋ก ์ฒ์ ๋ค๋ค๋ณด๋ ๊ฒ์ ์ฒ์์ด๋ผ ๊ฒ๋๊ธฐ๋ ํ๋ค. ์๋๋ ๋ค๋ฅผ๊น ์ญ์๋ ์ฒซ ๋จ๊ณ๋ถํฐ ๋ด๊ฐ ์ค์๋ฅผ ์ ์ง๋ ๋ค.
์ด๋ฒ์ ๋ด๊ฐ ์ค์ํ๋ ๋ถ๋ถ์ ๋ฐ๋ก repo ์์ฑ ๋จ๊ณ์์ .gitignore ์ ์์ฑํ ๋๋ค. โถ ๋ฌด์จ ์ผ์ด ์์๋์ง ๋ณด๋ฌ๊ฐ๊ธฐ
.gitignore์ ์ด๋ค ํค์๋๋ฅผ ๋ฃ์ด์ผ ํ ์ง ๋ชฐ๋ผ์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ Swift ํค์๋๋ง ๋ฃ์ด์ gitignore ์ ์์ฑํ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋์ค์ ๋ฐ๊ฟ์ผ์ง~ ํ๊ณ ๋์ด๊ฐ๊ธฐ๋ํ๋ค ํ ,, ํํ๋๋ค. gitignore ํ์ผ์ ์ ๋๋ก ์์ฑํ์ง ์์ผ๋ฉด, ๋ก์ปฌ์์ ์ฌ๋ผ๊ฐ์ง ์์๋ ๋ ํ์ผ๋ค์ด ์ ๋ถ ์ฌ๋ผ๊ฐ๊ฒ ๋์ด conflict๊ฐ ์๊ธฐ๊ธฐ ๋๋ฌธ์ ์ค์ํ๋ค.
โ๏ธ gitignore ๋ง๋ค๊ธฐ
https://www.toptal.com/developers/gitignore
gitignore์ ์ ํํ์ด์ง์์ ๊ฐ๋จํ๊ฒ ์์ฑ ๊ฐ๋ฅํ๋ค. ์ํ๋ ํค์๋๋ฅผ ๋ฃ์ด์ create๋ฅผ ๋๋ฌ์ฃผ๋ฉด ์๋์ผ๋ก ์์ค์ฝ๋๋ฅผ ๋ง๋ค์ด์ค๋ค. ํด๋น ์์ค์ฝ๋๋ฅผ ์ ๋ถ ๋ณต์ฌํด์ .gitignoreํ์ผ์ ์์ฑํด์ฃผ๋ฉด ๋๋๋ค. ์์ฑํ ๋ ํ์ํ ํค์๋๋ฅผ ์ ์ตํ๋์.
< iOS project gitignore ์ถ์ฒ ํค์๋ >
- swift
- xcode
- cocoapods
- Objective-C (์๋ฃ์ด๋ ๋์ง๋ง, ์ถ์ฒํ๋ค๊ณ ํ๋ค!)
- MacOS ๋ ์ถ๊ฐํด์ฃผ์ (์ธ๋ฐ ์์ด ์๊ธฐ๋ DS_Store ์ด๋์์์ด ์ฌ๊ธฐ์ ์๊ธฐ๋๊ฒ์ด๋ค!)
โ๏ธ Issue Template ๋ง๋ค๊ธฐ
issue๊ฐ ์ ์ค์ํ์ง ๋ชฐ๋๊ณ , ์ฒซ๋ฒ์งธ ํ๋ก์ ํธ์์๋ issue ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์์๋ค. ํ์ง๋ง,, ์ด๋ฒ์ ์ ์คํ๊ฒ ๊ทธ ํ์์ฑ์ ๋๊ผ๋ค. ๊นํ๋ธ๋ ์ด์๋ฒํธ๊ฐ #29 ์ฒ๋ผ ์ซ์๋ก ํ์ฑ์ด๋๋๋ฐ, commit message ๋ code review, comment ์ด๋์๋ #๋ฒํธ ๋ง ์ฐ๋ฉด ํด๋น ์ด์์ ์ฐ๊ฒฐ๋๋ค. ํ์ ํ ๋ ๋ด๊ฐ ์ด๋ค ๊ฐ๋ฐ์ ์งํํ๊ณ ์๋์ง, ์ด๋ค๊ฒ ๋ฌธ์ ๊ฐ ๋๋์ง ๋ฑ ๋์ ์ํฉ์ ํ์๋ค์๊ฒ ๊ณต์ ํ๊ธฐ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ธ๊ฒ ๊ฐ์๋ค.
issue๋ฅผ ์ ๋๋ก ์ฌ์ฉํด๋ณด๊ณ ์ถ์ด์ issue ํ ํ๋ฆฟ์ ๋ง๋ค์๋ค.
ํ์ง๋ง ์ด๋ฒ ํ๋ก์ ํธ์์, Issue๋ฅผ ์ ํ์ฉํ๊ณ ์ถ์์ง๋ง, ์์ฌ๋งํผ ์ ๋์ง ์์๋ค. ์๋ฌด๋๋ ์ด์ ์์ฑ์ ๋ํ ๊ท์น์ ์ ํ๊ณ ๋์ด๊ฐ์ง ์์์ ์ธ ๊ฒ ๊ฐ์๋ค.
๐ Issue ๊ท์น ์ ํ๊ธฐ
์ด์ ๊ท์น์ ์ด๋ป๊ฒ ์ ํด์ผํ ๊น, ์ผ๋จ ์ฐ๋ฆฌ ํ ์ด์๋ฅผ ๋ณด๋ฉด ์ ๋ฆฌ๋์ด์์ง ์์ ์ ๋ชฉ ์คํ์ผ, ๊ทธ๋ฆฌ๊ณ ๋ฌด์๋นํ ๋ผ๋ฒจ์ฌ์ฉ์ด ๋ฌธ์ ์๋ค. ์ง๊ธ์ ๋ด๊ฐ ์ ๋ชฉ์ ์ผ๊ด๋๊ฒ ๋ค ์ ๋ฆฌํด๋์์ง๋ง,,,์ผ๊ด๋์ง ์์ ๋๋์ด๋๊น?
1. ์ ๋ชฉ -์ ๋ชฉ์ ์๋ ํค์๋๋ก ํต์ผํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
- [Add] UI button ๊ตฌํ
- [Feat] UI button ์ ์ฅ ๊ธฐ๋ฅ ์ถ๊ฐ
- [Bug] ๋ฒํผ ๋๋ฅด๋ฉด ์๊น ์๋ฐ๋๋ ๋ฒ๊ทธ
- [Refactor] ์ฝ๋ ๋ฆฌํฉํ ๋ง
- [Chore] setting๊ณผ ๊ด๋ จํ ๋ฌธ์
์ฐ๋ฆฌ ํ์ ์ด์ ๋ชฉ๋ก์ด๋ค. ์ ๋ชฉ์ ์ด๋ฐ์์ผ๋ก ํต์ผํด๋จ๋ค. (์ํ ํ์ ์ด์ ํฌํ๋ฆฟ์ ๋ฒ ๊ผ๋น ใ ใ ) ํ์ง๋ง ์ด๋ค๊ฑด [Bug] ์ด๊ณ , ์ด๋ค๊ฑด [Fix]์ด๋ค. ์ด๋ฐ ํค์๋๋ฅผ ํต์ผํ๋ ๊ท์น์ ์ ํ์ผ๋ฉด ๋ ๊น๋ํ ์ ๋ชฉํต์ผ์ด ๋์ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ ,,, ์ด๋ฒ์ ์๋ 40๊ฐ์ ๋์ ์ด์์ ์ ๋ชฉ์ ๋ชจ๋ ๋ด๊ฐ ์์ ํด์ ๋ฐ๊ฟจ๋๋ฐ ์ด๋ฐ ์ผ๋ ์๊ธฐ์ง ์๊ฒ ์ง.
2. ๋ผ๋ฒจ - ๋ผ๋ฒจ๋ ์ด๋ ๊ฒ ๋ง๋ค์ด๋ณด์
- View ์ด๋ฆ
- ํ์ ์ด๋ฆ
- UI Design
- Bug
- ํ์์ chore ์ด๋ docs, setting ๋ฑ
์ฐ๋ฆฌ ํ์ ๋ผ๋ฒจ์ ๋๋์ฒด view๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๋๊ฑด์ง, ํค์๋๋ก ๋๋๊ฑด์ง ์ดํด๊ฐ ๋์ง ์๋๋ค. (์ค์ ๋ก ๋ฉํ ๋ถ๊ป ์ด๋ค ๊ธฐ์ค์ผ๋ก ๋๋๊ฑฐ๋๊ณ ์ง๋ฌธ์ด ๋ค์ด์ค๊ธฐ๋ ํ๋ค.) ListView๋ ์๋ ๋ทฐ์ธ๋ฐ, ๋๋์ฒด ๋ญ๋ฉฐ,, pin์ ๋ฃ์๊ฒ๋ ์๊ณ ์๋ฃ์๊ฒ๋์๊ณ . ์ฒด๊ณ๊ฐ ์ ์กํ์์ง ์์๋ค. ๋ค์๋ถํฐ๋ ๋ ์์์ฒ๋ผ ๊ท์น๊ณผ ๋ผ๋ฒจ์ ๋ชจ๋ ์ ํ๊ณ ์์ํด์ผ์ง,,
โ๏ธ Branch ๊ท์น ์ ํ๊ธฐ
develop
feat/54-mainview-ui
์ฒ์์ ๋ธ๋์น ์ด๋ป๊ฒ ํ์ผํ ์ง ๋ชฐ๋ผ์ ์๋์ฒ๋ผ ํ ์๋๋ฐ, ๋ ํนํ ๋ธ๋์น ์ด๋ฆ์ด๋ผ๊ณ ๊ทธ๋ฌ๋ค ํฌํฌํฌ ๐ค ๊ทธ๋์ ๋ค๋ค ๋ณดํต ์ฌ์ฉํ๋ค๋ ๋ฐฉ์์ธ ์ ๋ฐฉ์์ฒ๋ผ ๋ฐ๊ฟ๋ณด์... ๊ทธ๋ฆฌ๊ณ ๋ธ๋์น๋ ๋ฐ๋ก๋ฐ๋ก ์ญ์ ํ์ ์ง๊ธ ๋จ์์๋ ๋ธ๋์น๋ง ๋ช๊ฐ์ผ ๋๋์ฒด..
โ๏ธ PR Template ๋ง๋ค๊ธฐ
์ด๋ ๊ฒ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ PR ํฌํ๋ฆฟ์ ๋ง๋ค์! ํ ํ๋ฆฟ์ setting ํญ์์ ๋ง๋ค์ด๋ ๋๊ณ , .github ํด๋ ๋ด ์์ ๋ง๋ค์ด๋ ๋๋ค. (ํ๋ก์ ํธ ์์ฑํ๋ฉด ๊ฐ์ฅ ์๋จ์ ๋จ๋ ๊ทธ .github ํด๋)
๋๋ ์ฒ์์ ์ด์ํฌํ๋ฆฟ๋ง ๋ง๋ค์ด์ ์๋์ฒ๋ผ PR ๋ด์ฉ์ด ํต์ผ๋์ง ์๊ณ ์ ๊ฐ๊ฐ์ธ ์ฌํ(?)๊ฐ ๋ฐ์ํ์๋ค. ์ด๋ฐ๊ฑธ ๋ง๊ณ ๋์ผํ ํํ์ pr์ ์์ฑํ๊ณ ๋ฆฌ๋ทฐ๋ฐ์!!
โ๏ธ PR ๊ท์น ๋ง๋ค๊ธฐ
์ฐ๋ฆฌํ์ ๋ฌธ์ ์ค ํ๋๋, ๋ฐ๋ก ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ํ์ง ์๋๋ค๋ ์ ์ด์๋ค. ๊ทธ๋์ ํ์๋ค๋ผ๋ฆฌ์ ์ ๋ฌด๊ณต์ ๊ฐ ๋๋๊ณ ,,, ์ฝ๋ ํต์ผ์ด ์๋๋ค๋ ๊ฑฐ..?
๊ทธ๋ฆฌ๊ณ ๋ํ๋์ ๊ฐ์ฅํฐ ๋ฌธ์ ๋, pr ์ ์ฌ๋ฆฌ๊ณ , ๋ฆฌ๋ทฐ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์ merge๋๋ ์๋๊ฐ ๋๋ ธ๋ค. ๊ทธ๋์,, ํ๋ฒ์ pr 10๊ฐ์ ๋๊ฐ open ๋์ด์์๊ณ ๊ฒฐ๊ตญ.....์์ฒญ๋ conflict๊ฐ ์๊ฒจ์ xcode๊ฐ ์์ ์ด๋ฆฌ์ง ์๋ ์ฌํ๊น์ง ๋ฐ์ํ๋ค. ์ธ๊ณ ์ถ์๋ค ํํํ. ๊ทธ๋์ ํน์ ๋ค์ ํํ๋ ๋ ๋ด๊ฐ ,, github ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ค๋ฉด ๊ผญ ํ๊ณ ์ถ์๊ฒ pr ๊ท์น ์ ํ๋๊ฒ์ด๋ค. ์๋์ฒ๋ผ ์ ํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
- PR ์ฌ๋ฆฌ๋ฉด ํ์๋ค์๊ฒ ๊ณต์
- ํ๋ฃจ ๋งค์ผ๋งค์ผ ์ฌ๋ผ์จ PR์ ๋ํด์ ์ฝ๋๋ฆฌ๋ทฐ ๋จ๊ธฐ๊ธฐ
- PR์ open ๋๊ณ 36์๊ฐ ์ด๋ด๋ก ํ์ 2๋ช ์ด์์ approve๋ฅผ ๋ฐ์์ผํ๊ณ
- 2๋ช ์ด์์ approve ๊ฐ ์์ ๊ฒฝ์ฐ ๋จธ์ง ๊ฐ๋ฅ!
+ ์ฝ๋๋ฆฌ๋ทฐ ๊ท์น
๋ ์ฝ๋๋ฆฌ๋ทฐ์ ๋ํด์ ์๊ฐํด๋ณด์๋ค. ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ์ด๋ป๊ฒ ํ๋ฉด ์ ํ ์ ์์๊น ์๊ฐํ๋ค๊ฐ ๋ฑ ํฌ์๋ฌ๋์ pr ๋ฆฌ๋ทฐ ๊ท์น์ ๋ฐ๊ฒฌํ๋ค.
https://blog.banksalad.com/tech/banksalad-code-review-culture/
์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ํ๋ค๋ณด๋ฉด, ๋๊ฒ ์ฌ์ํ ๊ฒ์ ๊ณ ์ณ๋ฌ๋ผ๊ณ ๋งํ ๋๋ ์๊ณ , ๋ฌด์กฐ๊ฑด ๊ณ ์ณ์ผํ ๋๊ฐ ์๋ค. ์ด๊ฒ์ 1~5 ์ซ์๋ฅผ ์ด์ฉํด์ ๋ฆฌ๋ทฐํ๋ค๋ ์ ์ด ์ข์๋ค! ๋ค์ ๋ฆฌ๋ทฐ์์๋, ๋ฌด์กฐ๊ฑด ์ด ๊ท์น์ ๋ฐ๋ผ๋ณด๋๋ก ํ์.
- P1 ) ๊ผญ ๋ฐ์ํด์ฃผ์ธ์.
- P2 ) ์ ๊ทน์ ์ผ๋ก ๊ณ ๋ คํด์ฃผ์ธ์.
- P3 ) ์ฌ๋งํ๋ฉด ๋ฐ์ํด์ฃผ์ธ์ (comment)
- P4 ) ๋ฐ์ํด๋ ์ข๊ณ , ์๋์ด๋ ์ข์์. (approve)
- P5 ) ๊ทธ๋ฅ ์ฌ์ํ ์๊ฒฌ์ ๋๋ค. (approve)
๊ทธ๋ฆฌ๊ณ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์์ ๋, ์์ ํ๊ณ ์์ ๋จ์๋ก ์ปค๋ฐ์ ๋จ๊ธฐ๊ณ ์ปค๋ฐ ๋ฒํธ๋ฅผ ๋ต๋ณ์ผ๋ก ๋จ๊ฒจ์ฃผ์.
๐ ์ฝ๋ ์ปจ๋ฒค์ ์ ํ๊ธฐ
์ฝ๋ ์ปจ๋ฒค์ ์ ์ ํ์ง ์์๋๋ ๋ฆฌ๋ทฐ์์ '์ฌ๊ธฐ์๋ ์ํฐํด๋ฌ๋ผ', '์ํฐ๋ฅผ์ง์๋ฌ๋ผ' '๋์ด์ฐ๊ธฐ๋ฅผ ์ง์๋ฌ๋ผ'.. ๋ผ๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญ๋๊ฒ ํ๋ ๋๋ฅผ ๋ฐ๊ฒฌํ ์ ์์๋ค. ์์ผ๊น? ๊ณ ๋ฏผํด๋ณด๋,,,, ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ์ ์ ์ฝ๋์ปจ๋ฒค์ ์ ์์ ํ๋๋ผ,,,, ํด,,, ๊ทธ๋๋ lint ๊ฐ ์์ด์ ๋์ถฉ ๊ท์น์ด ์ ํด์ง์ค ์์๋๋ฐ ์ฌ์ํ ๊ฒ๋ค์ด ์ ํด์ง์ง ์์์ ์ด๋ฅผ ์์ ํ๋๋ฐ๋ ์๊ฐ์ ์์๋๊ฒ ๊ฐ๋ค.
๋ค์ ํ๋ก์ ํธ์์๋ ์ฝ๋ ์ปจ๋ฒค์ ์ ๊ผญ ์ ํ๊ณ ์์ํด์ผ๊ฒ ๋ค. ๋ฆฐํธ๊ฐ ์์ด๋, ์ฌ๊ธฐ์ ์ก์์ฃผ์ง ๋ชปํ๋ ์ฌ์ํ ๊ฒ๋ค์ด ๋๊ฒ ๋ง์๋ค. ์๋ ๊ทธ๋ฅ ์ค์ง๊ฒ ๋ง๋ค! ๋ค์ ํ๋ก์ ํธ๋๋, ์๋ ๊ธ์ ์ฐธ๊ณ ํด์ ์ฝ๋ ์ปจ๋ฒค์ ์ ์ ํ๊ณ ์์ํด์ผ๊ฒ ๋ค. ์๋์๋ ๋ด๊ฐ ๋ ์ด๋ฒ ํ์์ ์ด๋์๋ถํฐ ๋ฌธ์ ๊ฐ ๋์์๊น ์ฐพ์๋ณด๋ค๊ฐ ์ฐพ์ '์คํ์ผ์์ด์ ์ฝ๋ ์ปจ๋ฒค์ '์ด๋ค. ์ด๊ฒ์ ์ฐธ๊ณ ํด์ ์ ์ฉ์์ผ๋ด์ผ๊ฒ๋ค!
https://github.com/StyleShare/swift-style-guide
๐ Commit Message ๊ท์น ์ ํ๊ธฐ
์ปค๋ฐ ๋ฉ์ธ์ง ๊ท์น์ ์ ํ๊ธด ํ๋๋ฐ, ์๋ฌด๋ฐ์ ๋ฐ์์ ์ ํ๋ค๋ณด๋๊น ์ด๋ค UIํ๋ฉด ๊ตฌ์ฑ์ add๋ก ๋์ด์๋๋ฐ, ์ด๋ค๊ฑด feat์ผ๋ก ๋์ด์๊ณ ์ด๋ฐ์์ผ๋ก ์ ๋๋ก ์ฒด๊ณ๊ฐ ์กํ์์ง ์์๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ์๊ฒ ๊ผญ ํ์ํ commit message๋ง ์ ๋๋ก ์ ์ํ๊ณ ์ฒด๊ณ๋ฅผ ์ ํ๊ณ ๋์ด๊ฐ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐ๋์๋ค.
๊ทธ๋ฆฌ๊ณ ์ปค๋ฐ๋ฉ์ธ์ง์ ์ด์๋ฒํธ๋ฅผ ๋จ๊ธฐ๋ฉด, ํด๋น ์ด์์ ์ปค๋ฐ๋ด์ญ์ด ์๋์ผ๋ก ๋จ๊ฒจ์ง๊ฒ ๋๋ค. ์ด ๊ธฐ๋ฅ๋ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ์ด์ผ ํ๋๋ฐ ๊ทธ๋ ์ง ๋ชปํด์ ์์ฌ์ ๋ค.
commit message ๊ท์น์ ์ด๋ ๊ฒ ์ ํด๋ณด๊ณ ์์ํ์.