์๋ ์ ๋ฐฐ ์์ด๋ ๊ด์ฐฎ์! ์ฐ๋ฆฌ ๊ฐ์ด ์๋ก์ ์ ๋ฐฐ๊ฐ ๋์ด์ฃผ์!
์ 2์ ๊ณต์์ ์ํ ํ๊ณผํ๊ธฐ, ์ ๊ณต์ ๋ณด ๊ณต์ ํ๋ซํผ - ๋๋์ ๋ฐฐ29th WE SOPT APPJAM ์ต์ฐ์์ ๐
ํด์ปคํค ๊ธฐ๊ฐ : 2022.01.02 ~ 2022.01.22
์ฑ์คํ ์ด ์ถ์ : 2022.03.12
์ฌ์ฉ์ฑ ๊ฐ์ ๋ฐ ๊ธฐ๋ฅ ํ์ฅ ์ ๋ฐ์ดํธ : 2022.11.05
๐ ์ง์์ ๋ฐฐ ๐ | ๐ ์ ๋น์ ๋ฐฐ ๐ | ๐ ์์ฃผ์ ๋ฐฐ ๐ |
@hwangJi-dev | @dev-madilyn | @jane1choi |
๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library) | ๋ฒ์ (Version) | ์ฌ์ฉ๋ชฉ์ (Purpose) |
---|---|---|
SnapKit | 5.0.0 | Layout |
Then | 3.0.0 | Layout |
Moya | 15.0.0 | ์๋ฒ ํต์ |
RxSwift | 6.5.0 | ๋น๋๊ธฐ ์ฒ๋ฆฌ |
RxCocoa | 6.5.0 | ๋น๋๊ธฐ ์ฒ๋ฆฌ |
ReactorKit | 3.2.0 | MVVM ์ํคํ ์ฒ ํ์ฉ |
Firebase/Analytics | 9.0.0 | ์ฑ ๋ฐ์ดํฐ ๋ถ์ |
Firebase/Messaging | 8.12.0 | ํธ์ ์๋ฆผ |
NadoSunbae-iOS
โโโ๐ Global
โ โโโ LaunchScreen.storyboard
โ โโโ PublicData
โ โโโ Factory
โ โโโ Class
โ โโโ Struct
โ โโโ Extension
โ โโโ Protocol
โ โโโ Font
โ โโโ UIComponent
โ โโโ Class
โ โโโ Xib
โโโ๐ Network
โ โโโ APIEssentials
โ โโโ APIModels
โ โโโ APIManagers
โ โโโ MoyaTarget
โ โโโ NetworkLoggerPlugin.swift
โโโ๐ Screen
โ โโโ Classroom
โ โโโ Reactor
โ โโโ SB
โ โโโ VC
โ โโโ Cell
โโโ๐ Support
โโโ AppDelegate.swift
โโโ SceneDelegate.swift
โโโ Assets.xcassets
โโโ Colorsets.xcassets
โโโ Info.plist
โโโ Configuration
โโโ Development
โโโ QA
โโโ Release
- ์๋น์ค ๋ด์์ ์๋ก ์ฌ๋ผ์จ ๋ชจ๋ ๊ธ๋ค(ํ๊ธฐ, 1:1 ์ง๋ฌธ, ์ปค๋ฎค๋ํฐ ๊ธ)์ ํ๋์ ๋ณผ ์ ์์ต๋๋ค.
- ์ ๋ฐฐ๋ญํน์ ํตํด ๋๋์ ๋ฐฐ ์๋น์ค์์ ์ด์ ์ ์ผ๋ก ํ๋ํด์ฃผ๋ ์ ๋ฐฐ๋ค์ ํ๋์ ๋ณผ ์ ์์ต๋๋ค.
- ๋ณธ์ธ์ ํ๊ณผ ๋ฐ ๊ด์ฌ์๋ ํํ๊ณผ์ ํ๊ธฐ๊ธ์ ์ด๋ํ ์ ์์ต๋๋ค.
- ์๋จ ํ ๊ธ ๋ฒํผ์ ํตํด ํ๊ณผ ํํฐ ๋ฐํ ์ํธ๋ฅผ ๋ถ๋ฌ์ ์ด๋ ํ๊ณผ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- ๋ณธ์ธ์ ํ๊ณผ ํ๊ธฐ๋ฅผ ์ต์ 1ํ ์์ฑํด์ผ ํฉ๋๋ค!
- ํ๊ณผ ํ๊ธฐ ์์ฑ ํญ๋ชฉ
- ํ์: ํ๊ณผ์ ํ์คํ, ์ฅ๋จ์
- ์ ํ: ๋ฐฐ์ฐ๋ ๊ณผ๋ชฉ, ์ถ์ฒ ์์ , ํ๋ ์์ , ํฅํ ์ง๋ก, ๊ฟํ (์ต์ 1๊ฐ ์ด์ ์์ฑ)
- ํ๊ณผ ํ๊ธฐ ์์ฑ ํญ๋ชฉ
- ๊ด์ฌ์๋ ํ๊ณผ์ ํ๊ธฐ๋ฅผ ์ธ์์ ์ผ๋ก ์ฝ์ ํ ์ถ๊ฐ์ ์ผ๋ก ๋๋๊ณ ์ถ์ ์ง๋ฌธ์ด ์๋ค๋ฉด 1:1 ์ง๋ฌธ ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์์ต๋๋ค.
- ์ ๋ฐฐ์ 1:1 ์ง๋ฌธ ๋ชฉ๋ก์ ๋ณด๊ฑฐ๋ ์ ์ง๋ฌธ์ ๋จ๊ธธ ์ ์์ต๋๋ค.
- ์ง๋ฌธ ๊ธฐ๋ฅ์ ์ฑํ ์ค๋ ๋๋ก ์ ๊ณตํฉ๋๋ค.
- ์ค๋ก์ง ์ง๋ฌธ์์, ์ง๋ฌธ์ ๋ฐ์ ์ฌ์ฉ์๋ง ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์ผ๋ฉฐ ์ผ๋ฐ ์ ์ ๋ค์ ๊ธ ์ด๋๋ง ๊ฐ๋ฅํฉ๋๋ค. (๋ต๊ธ ์์ฑ ๋ถ๊ฐ)
- ๋ถ์ ์ ํ ์ง๋ฌธ ๋ฐ ๋ต๊ธ์ ์ ๊ณ ํ ์ ์์ผ๋ฉฐ, ์ ์ ๋ฅผ ์ฐจ๋จํ ์ ์์ต๋๋ค. (์ฐจ๋จ๋ ์ ์ ์ ๊ธ์ ๋ณด์ด์ง ์์ต๋๋ค.)
- ์ปค๋ฎค๋ํฐ ํญ์์๋ ์ข ๋ ์์ ๋กญ๊ฒ ์ ์ ๋ค๊ฐ์ ์ํต์ ํ ์ ์์ต๋๋ค.
- ์ง๋ฌธ/์ ๋ณด/์์ ๊ธ์ ์์ฑํ๊ณ ์ํตํ ์ ์์ต๋๋ค.
- ํน์ ํ๊ณผ์ ์ ๊ณต์ ์ ์ฒด์๊ฒ ํน์ ์ ์ฒดํ๊ณผ์ ํ์๋ค์๊ฒ ์ง๋ฌธํ๊ณ ์ถ์ ๋ ์ปค๋ฎค๋ํฐ์ ์ง๋ฌธ ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์์ต๋๋ค.
- ์ง๋ฌธ๊ธ์ ์์ฑํ ๋ ํน์ ํ๊ณผ๋ฅผ ์ง์ ํ๋ฉด, ํด๋น ํ๊ณผ์ ๋ณธ์ ๊ณต, ์ 2์ ๊ณต์ ๋ชจ๋์๊ฒ ์๋ฆผ์ด ๊ฐ๋๋ค.
- ํ๊ณผ ํํฐ ๊ธฐ๋ฅ์ ํตํด ํน์ ํ๊ณผ์ ๊ธ๋ง์ ์ด๋ํ ์ ์์ต๋๋ค.
- ํค์๋๋ฅผ ํตํด ๊ฒ์๊ธ์ ๊ฒ์ํ ์ ์์ต๋๋ค.
1:1 ์ง๋ฌธ
- ํ๋ฐฐ๊ฐ 1:1์ง๋ฌธ๊ธ ์ฒ์ ์์ฑ์ โ ์ ๋ฐฐ์๊ฒ ์๋ฆผ
- ์์ฑํ๋ 1:1 ์ง๋ฌธ๊ธ์ ์ ๋ฐฐ๊ฐ ๋ต๊ธ ๋ฌ์์คฌ์์. โ ํ๋ฐฐ์๊ฒ ์๋ฆผ
- ํ๋ฐฐ๊ฐ ๋ณธ์ธ์ด ์์ฑํ 1:1์ง๋ฌธ๊ธ์ ์ถ๊ฐ ๋๊ธ์ ๋ค๋ ๊ฒฝ์ฐ โ ์ ๋ฐฐ์๊ฒ ์๋ฆผ
์ปค๋ฎค๋ํฐ
- ๋ณธ์ธ์ด ์์ฑํ ์ปค๋ฎค๋ํฐ๊ธ์ ๋๊ธ์ด ๋ฌ๋ฆฐ๊ฒฝ์ฐ ์๋ฆผ
- ๋ต๊ธ์ ์์ฑํ ์ปค๋ฎค๋ํฐ ๊ธ์ ๋ต๊ธ์ด ๋ฌ๋ฆฐ ๊ฒฝ์ฐ ์๋ฆผ
- ํน์ ํ๊ณผ๋์ ์ง๋ฌธ๊ธ์ด ์ฌ๋ผ์จ ๊ฒฝ์ฐ ์๋ฆผ
- 1:1 ์ง๋ฌธ ์์ฑ ์ ์ ๋ฐฐ์ ๋ง์ดํ์ด์ง์ ์ง๋ฌธ ๊ธ์ด ๊ฒ์๋ฉ๋๋ค.
- ์ ๋ฐฐ์ ๋ง์ดํ์ด์ง์์๋ ์ ๋ฐฐ์ ๋ณธ์ ๊ณต, ์ 2์ ๊ณต, ํ์ค์๊ฐ, ์ง๋ฌธ ์๋ต๋ฅ ๋ฑ์ ํ์ธํ ์ ์์ต๋๋ค.
- ๋ณธ์ธ์ ๋ง์ดํ์ด์ง์ธ ๊ฒฝ์ฐ, ํ๋กํ์ ์์ ํ๊ณ ํ ์ค ์๊ฐ๋ฅผ ์์ฑํ ์ ์์ผ๋ฉฐ, ๋ด๊ฐ ์ด ๊ธ, ๋ต๊ธ, ํ๊ธฐ, ์ข์์ ๋ชฉ๋ก์ ๋ชจ์๋ณผ ์ ์์ต๋๋ค.
๐ ๋ค์ด๋ฐ
- ํด๋์ค/๊ตฌ์กฐ์ฒด ์ด๋ฆ์ UpperCamelCase๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-
ํจ์์ ๋ณ์์๋ lowerCamelCase๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-
๋ฒํผ๋ช ์๋ Btn ์ฝ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-
์ฝ์ด๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ์ฝ์ด๋ ๋๋ฌธ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-
์์
password -> pw ->
PW
userid ->
userID
-
-
๋ชจ๋ IBOutlet์๋ ํด๋น ํด๋์ค๋ช ์ ๋ค์ ๋ถ์ ๋๋ค.
์์ธ Image๋ ํญ์ Img๋ก ์ค์ฌ์ ๋ค์ด๋ฐํฉ๋๋ค.
@IBOutlet weak var settingImgView: UIImageView!
-
๊ธฐ๋ณธ ํด๋์ค ํ์ผ์ ์์ฑํ๊ฑฐ๋ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ ๋๋ ์ฝ์ด ๊ท์น์ ๋ฐ๋ผ ๋ค์ด๋ฐํฉ๋๋ค.
-
์์
TV
TVC
CV
CVC
VC
NVC
TBC
TableView -> TV TableViewCell -> TVC CollectionView -> CV CollectionView Cell -> CVC ViewController -> VC NavigationController -> NVC TabbarController -> TBC
์ข์ ์
@IBOutlet weak var nadoBtn: UIButton! @IBOutlet weak var nadoBackMainView: UIView! @IBOutlet weak var reviewPostTV: UITableView!
๋์ ์
@IBOutlet weak var ScrollView: UIScrollView! @IBOutlet weak var nadoCollectionView: UICollectionView! @IBOutlet weak var tagCollectionView: UICollectionView! @IBOutlet weak var tableview: UITableView!
-
setUp
โ setUpDelegate (๊ธฐ๋ฅ๊ด๋ จ ํจ์)configure
โ configureUI (UI๊ด๋ จ ํจ์)IBAction
โ tapDismissBtn() : ๋จ์ ํด๋ฆญ, presentResultVC() : ํ๋ฉด์ ํ ๋ฉ์๋(push, present, pop, dismiss)
๐ท ์ฃผ์
// MARK: @IBOutlet
// MARK: Properties
// MARK: @IBAction
// MARK: LifeCycle
// MARK: - UI
// MARK: - Custom Methods
// MARK: - ํ๋กํ ์ฝ๋ค ํ๋์ฉ ์ฑํํด์ Extension ์ผ๋ก ๋นผ๊ธฐ (TV, CV, .., Custom Delegate ๋ชจ๋)
/// ~ ํ๋ ๋ฉ์๋ (ํจ์๋ ํญ์ ๋ฌธ์ํ)
// TODO: ์์ผ๋ก ํ ์ผ์ TODO๋ก ์ ์ด๋๊ธฐ
โญ๏ธ ๊ณต๋ฐฑ
-
ํญ ์ฌ์ด์ฆ๋ 4๋ก ์ฌ์ฉํฉ๋๋ค.
-
ํ ์ค์ ์ต๋ ๊ธธ์ด๋ 80์๋ก ์ ํํฉ๋๋ค.
-
์ต๋ tab depth ์ ํ
- tab์ ์ต๋ depth๋ 4๋ก ์ ํํฉ๋๋ค.
- ์ด ์ด์์ผ๋ก depth๊ฐ ๊ธธ์ด์ง๋ฉด ํจ์๋ฅผ ํตํด ๋๋ ์ ์๋๋ก ํฉ๋๋ค.
- ๊ทธ ์ด์์ผ๋ก ๊ฐ์ ํ ์ ์๋ค๊ณ ํ๋จ๋๋ ๊ฒฝ์ฐ, ํ์๋ค๊ณผ์ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ํตํด ๊ฐ์ ํฉ๋๋ค.
-
๊ดํธ ์ฌ์ฉ
- (if, while, for)๋ฌธ ๊ดํธ ๋ค์ ํ์นธ์ ๋์ฐ๊ณ ์ฌ์ฉํฉ๋๋ค.
if (left == true) { // logic }
-
๋์ด์ฐ๊ธฐ
let a = 5; // ์์ชฝ ์ฌ์ด๋ก ๋์ด์ฐ๊ธฐ ํ๊ธฐ if (a == 3) { // logic }
๐ธ ๊ธฐํ๊ท์น
-
์ธ๋ถ์์ ์ฌ์ฉ๋์ง ์์ ๋ณ์๋ ํจ์๋
private
์ผ๋ก ์ ์ธํฉ๋๋ค. -
viewDidLoad() ์ ๊ฐ์ ์๋ช ์ฃผ๊ธฐ ํจ์๋ค์๋
function
๋ง ์์น์ํต๋๋ค. -
๋ถํ์ํ self๋ ์ง์ํฉ๋๋ค. ์์ธ ํด๋ก์ ๋ฅผ ์ฌ์ฉํ ๋๋ ์์ฒด ํจ์์ self๋ฅผ ๋ถ์ฌ์ค๋๋ค.
-
Extension ์ ์ฌ์ฉํด ๊ธฐ๋ฅ ๋จ์๋ก ์ฝ๋๋ฅผ ๋ ๊ฐ๋ ์ฑ์๊ฒ ๊ตฌ๋ถํฉ๋๋ค.
<๊ธฐ๋ณธ ํด๋์ค์ ๋ฐฐ์น๋๋ ๊ฒ>
- IBOutlet, Properties, LifeCycle, IBAction
<Extension ๋ฐฐ์น ์์>
1. UI 2. custom Methods 3. delegate (extension์ผ๋ก ๋นผ๋ ํ๋กํ ์ฝ๋ค ์์ ๋กญ๊ฒ) 4. ๋ ธํฐ, ํค๋ณด๋ ๋ฑ๋ฑ 5. Network
๐จย Fix: ๋ฒ๊ทธ, ์ค๋ฅ ํด๊ฒฐ
โ
ย Chore: ์ฝ๋ ์์ , ๋ด๋ถ ํ์ผ ์์ ๋ฑ ์ก์ผ ๋ชจ๋
โย Add: Asset ์ถ๊ฐ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ, ์๋ก์ด ํ์ผ ์์ฑ
โจย Feat: ์๋ก์ด ๊ธฐ๋ฅ ๊ตฌํ
โฐ๏ธย Remove: ์ธ๋ชจ์๋ ์ฝ๋, ํ์ผ ์ญ์
๐ย Docs: README, WIKI ๋ฑ์ ๋ฌธ์ ๊ฐ์
๐ย Mod: Storyboard ํ์ผ๋ง ์์ ํ ๊ฒฝ์ฐ
๐ย Move: ํ๋ก์ ํธ ๋ด ํ์ผ ์ด๋
โช๏ธ Rename: ํ์ผ ์ด๋ฆ ๋ณ๊ฒฝ
โป๏ธย Refactor: ๋์ ๊ฒฐ๊ณผ๋ ๊ฐ์ผ๋ ์ฝ๋ ์์ฒด ์ ๋ฉด ์์ ๋ฐ ์ฑ๋ฅ ๊ฐ์
๐๐ปโโ๏ธ NadoSunbae-iOS Gitflow ๐๐ปโโ๏ธ
1. Issue๋ฅผ ์์ฑํ๋ค.
2. feature Branch๋ฅผ ์์ฑํ๋ค.
3. Add - Commit - Push - Pull Request ์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
4. Pull Request๊ฐ ์์ฑ๋๋ฉด ์์ฑ์ ์ด์ธ์ ๋ค๋ฅธ ํ์์ด Code Review๋ฅผ ํ๋ค.
5. Code Review๊ฐ ์๋ฃ๋๋ฉด Pull Request ์์ฑ์๊ฐ develop Branch๋ก merge ํ๋ค.
6. ์ข
๋ฃ๋ Issue์ Pull Request์ Label๊ณผ Project๋ฅผ ๊ด๋ฆฌํ๋ค.
- ๋ธ๋์น ๋จ์ = ์ด์ ๋จ์ = PR๋จ์
- ๋ธ๋์น๋ ๋ทฐ ๋จ์๋ก ์์ฑํฉ๋๋ค. ('UI / Func / Server' ๋ก ๊ธฐ๋ฅ ์ธ๋ถ ๊ตฌ๋ถ)
- ๋ธ๋์น ๊ท์น โ feature/#์ด์๋ฒํธ-(UI/Func/Server)-ํญ(์คํฌ๋ฆฐ)-๊ธฐ๋ฅ๊ฐ๋ต์ค๋ช
ex) feature/#1-UI-review-makeNaviBar
- โจย [FEAT]
- ๐๏ธ [HOTFIX]
- ๐จย [FIX]
- โป๏ธย [REFACTOR]
- โ ย [CHORE]