Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- JS
- 파이썬
- 노드JS
- SwiftUI
- 인프런강의
- 인프런파이썬
- Python3
- 카카오톡채팅봇
- nodeJS
- 교환학생토플
- rxswift
- 프로그래머스
- 토플공부수기
- 인프런파이썬강의
- swift
- 자바스크립트
- 리프2기
- 파이썬웹크롤링
- IOS
- IOS프로그래밍
- 유학토플
- 토플
- uikit
- 인프런오리지널
- 파이썬중급
- 파이썬중급강의
- 웹크롤링
- 스위프트
- 인프런
- 우리를위한프로그래밍
Archives
- Today
- Total
먹고 기도하고 코딩하라
[iOS] 프로젝트 파일 그룹 구조 잡기 본문
728x90
728x90
iOS 앱의 아키텍처를 잡는 문제는 아니고, 프로젝트가 있으면 파일을 어떻게 그룹별로 관리하는 게 좋은지에 대한 글이다.
사실 회사 코드의 경우 이미 쓰임새에 맞춰 그룹별로 잘 나눠져 있어 크게 고민할 건 없는데, 개인 프로젝트를 할 때면 고민이 생긴다.
뷰 컨트롤러끼리는 같은 그룹에 둬야 하나? 아니면 같은 화면을 구성하는 것들을 같은 그룹에 둬야 하나?
그룹 구조 잡는 일은 별 거 아니라고 생각할 수도 있지만 화면이 많아지고 파일이 많이 생기다 보니 미리부터 고민을 좀 해둘걸 하는 생각이 들어서 지금이라도 쓴다. 실은 미래의 내가 참고하라고 쓰는 글에 더 가깝다.
- 서로 연관되어 있거나, 공통점이 있는 것들을 같은 그룹에 넣는다.
- 예를 들면, 같은 모듈이나 화면 등을 이루는 모델, 뷰모델, 뷰컨트롤러는 같은 그룹에 분류한다. 뷰모델끼리 분류하는 것보다 이렇게 연관된 것들끼리 같은 그룹에 넣어두면 나중에 찾아보기도 더 쉽다.
- 재사용 가능한 뷰의 경우, 앱 전반에 사용 가능한 재사용 뷰와 특정 모듈에서만 사용되는 서브 뷰들이 있다.
- 첫 번째 경우에는 Components 등의 그룹을 따로 만들어서 관리한다.
- 두 번째 경우에는 해당 모듈의 Subviews나 Components 서브 그룹을 만들어 관리한다.
1. Resources 그룹
에셋, 스토리보드 등의 파일이 들어간다.
- Resources
- Assets
- Base.lproj -> LaunchScreen.storyboard
2. Sources 그룹
모델, 서비스, 뷰컨트롤러와 리액터 등 앱의 기능을 이루는 파일이 들어간다.
- Sources
- Networking (통신 관련 파일)
- Models (모델 파일)
- Services (UserDefaults, UIAlertAction, 데이터베이스 작업 등을 담은 파일)
- Modules (화면 단위의 그룹)
- Subviews (화면 내에서만 재사용되는 커스텀 뷰들)
- Components (재사용되는 커스텀 뷰들)
- Extensions (기본 타입의 Extension들을 모아둔 파일)
- Utils (기타 파일)
- AppDelegate
- SceneDelegate
3. Support 그룹
Info.plist 등 앱의 설정에 관한 파일들이 들어간다.
- Support
- Info.plist
References
728x90
반응형
'앱 > Swift' 카테고리의 다른 글
RxSwift의 observe(on:)과 DispatchQueue.main.async 언제 써야 할까 (0) | 2023.10.14 |
---|---|
[Architecture] MVC -> MVVM + RxSwift로 개조하기 (0) | 2023.09.09 |
[UIKit] status bar, home indicator 배경색 변경하기 (0) | 2023.08.24 |
[UIKit] Status bar 폰트 색상 동적으로 변경하기 (0) | 2023.08.17 |
[UIKit] 탭한 위치가 어느 뷰의 영역 안에 있는지 확인하기 (0) | 2023.08.10 |
Comments