최대한 명시적인 이름을 사용한다.
ViewController의 경우 이름을 다 작성해준다. (VC 등으로 줄여서 사용하지 않음)
// 좋은 예
class HomeViewController: UIViewController {
//
}
class MovieDetailCollectionCell: UICollectionViewCell {
}
// 나쁜 예
class HomeVC: UIViewController {
//
}
Delegate의 경우 객체이름 + 기능 + Delegate를 적는다.
// HomeViewController의 화면 플로우 Delegate
protocol HomeViewControllerFlowDelegate {
}
Extension : 기본은 파일+기능으로 적는다. 파일 하나에 기능이 많아지면 + 만 사용해 암시적으로 적는다.
기본 -> String+Regex
파일에 기능이 많아짐 -> String+
Unit Test 파일의 경우 테스트 기능 + Tests를 적어준다.
// 회원가입 정규식 로직 확인 유닛 테스트
SignUpRegexTests
UI Test 파일의 경우 화면 이름 + UITests 을 적어준다.
// 로그인 화면 UI 테스트
LoginUITests
Scene 단위로 폴더를 만들고 그 안에서 View, Model 등을 나눈다.
#예시
GoogleService-Info #plist
Service-Info #plist
.swiftlint
.swiltlint.auto
.swiftgen
| burstcamp
| **App** #앱 첫 실행 관련
- AppDelegate.Swift
- SceneDelegate.Swift
- Info
- LaunchScreen
| **Presentation**
| Coordinator
| Auth
| Tab
| Home
| View
- HomeViewController.Swift
- HomeView.Swift
| ViewModel
- HomeViewController.Swift
| 그 외 Tab View 들
| **Domain**
| UseCase
| Model # 앱 내부에서 사용할 모델
| Interfaces # 프토토콜
| **Data**
| Repositories # 구현
| Network
| APIModel # 네트워크 모델
| Local
| **Service** #네트워크, 캐시, 로컬 저장 등
| Network
| Cache
| **Resources** #이미지, 컬러 등을 모아둠. SwiftGen으로 생성된 파일도 포함
| **Util**
| Protocol #공통적으로 사용하는 프로토콜
| Contant #상수 rawValue를 저장
| Error #에러 관리
| Extensions # Swift 기본 프로퍼티 Extension
| String
- String+Regex
- String+Won
| UIColor
|EoljugaTests
- SignUpRegexTests
| EoljugaUITests
- LoginUITests
tab으로 사용한다. (tab은 xcode에서 4칸)
extension String {
func isValidRegex(_ regex: String) -> Bool {
//
}
}