-
Notifications
You must be signed in to change notification settings - Fork 10
Ground Rule
modyhoon edited this page Oct 26, 2021
·
14 revisions
- 스토리(Story) 별로 feature 브랜치 명명
- main - develop - feature 세개의 브랜치 사용
- rebase merge
- 브랜치 전략
- [Feat] : 모델, 뷰컨, 로직 등등 구현관련
- [Test] : UnitTest 작성
- [Fix] : 버그 해결
- [Design] : UI 작업
- [Refactor] : feat 이후 구조 변경
- [Restyle] : 파일명, 변수명 변경, 폴더 이동 등 작은 개선사항
- [Docs] : README 파일
- [Asset] : asset 추가
- [Add] : 프로젝트 생성, 파일 생성, API 추가, SMP 추가
- [Git] : 깃 머지 관련 커밋에 적용
- Clean Architecture
-
MVVM + Combine
- 왜?
- 뷰컨이 커지는 것을 막을 수 있다.
- 테스트 가능한 구조가 된다.
- 유지보수에 용이하다.
- binding 하는 방법
- delegate → 다른것과 헷갈릴 우려
- Property Observer
- 클로저 → 불편
- notification → 안티패턴
-
combine
- RxSwift와 잘섞인다
- 깔끔하다!
- 왜?
-
MVVM + Combine
-
MARK는 함수 바로 윗줄에 작성
- MARK 기준
-
configure
// MARK: - Configuration
-
delegate
// MARK: - Delegate : TableView
-
(+ 줄 띄어쓰기 하지 않음)
-
- MARK 기준
-
Extension
- 프로토콜 채택 시에만 사용
- 컴파일 시간 이슈
-
클로저 매개변수
- 로직이 필요할 경우 : 매개변수의 이름을 지정
- 단순 반복하는 고차함수 :
$
사용
-
return, self
- 생략하지 않음
-
강제언래핑 (
!
)- 절대 - - 금지
-
if else 문
if 조건 { return aa } // 띄우기 else { return bb }
-
guard let
guard let a = "a", let b = "b" else { return } // 개행하지 않음
-
매개변수 개행 기준
-
configure에서 Page guide at column -
매개변수 3개 이상부터 개행
-
- 변수명에는 전치사 없애기
- UIKit Import 시
Label
,ImageView
등 타입명 명시 -
get
,set
지양
- 화면별로 폴더를 나눔
- ViewController의 경우 따로 폴더에 속하지 않음
- View, ViewModel, UseCase, Model 등은 폴더에 한번 더 감싸기
- 매주(금) 폴더 미리 생성
- Scene
- View
- ViewModel
- Usecase
- Model
- 스토리보드 X, SnapKit X
- CustomView 내에 위치
- depth : 1로
- CustomView에서 addTarget 액션 : delegate 로 전달
lazy var titleLabel: UILabel = {
let label = UILabel()
label.text = "Pay"
label.font = UIFont.boldSystemFont(ofSize: 30)
return label
} ()
- MVVM 을 제대로 활용
- 테스트 단위 :
internal function
기준 - 테스트 코드 작성 시간 지정 :
30분
18:30-19:00
- Week1 : 민상킹
- Week2 : 태훈킹
- Week3 : 지수퀸
- Week4 : 수정퀸
- 주중 체크인 : 코어타임 근무 필수
- 주중 체크아웃 : 19:00 이후 자율
task
- 주말 : 커밋 금지 ❌
- 6주차 [크런치 기간] 예외
노션
S002_강민상 | S013_김태훈 | S045_이지수 | S057_최수정 |
---|---|---|---|
@FreeDeveloper97 | Modyhoon | tmfrlrkvlek | sujeong000 |