먹고 기도하고 코딩하라

[iOS] 프로젝트 파일 그룹 구조 잡기 본문

앱/Swift

[iOS] 프로젝트 파일 그룹 구조 잡기

사과먹는사람 2023. 8. 31. 14:10
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
반응형
Comments