Skip to content

Ground Rule

modyhoon edited this page Oct 26, 2021 · 14 revisions

브랜치 전략

  • 스토리(Story) 별로 feature 브랜치 명명
  • main - develop - feature 세개의 브랜치 사용

image

Commit Convention

  • [Feat] : 모델, 뷰컨, 로직 등등 구현관련
  • [Test] : UnitTest 작성
  • [Fix] : 버그 해결
  • [Design] : UI 작업
  • [Refactor] : feat 이후 구조 변경
  • [Restyle] : 파일명, 변수명 변경, 폴더 이동 등 작은 개선사항
  • [Docs] : README 파일
  • [Asset] : asset 추가
  • [Add] : 프로젝트 생성, 파일 생성, API 추가, SMP 추가
  • [Git] : 깃 머지 관련 커밋에 적용

코딩 스타일

Design Pattern

  • Clean Architecture
    • MVVM + Combine
      • 왜?
        • 뷰컨이 커지는 것을 막을 수 있다.
        • 테스트 가능한 구조가 된다.
        • 유지보수에 용이하다.
      • binding 하는 방법
        • delegate → 다른것과 헷갈릴 우려
        • Property Observer
        • 클로저 → 불편
        • notification → 안티패턴
        • combine
          • RxSwift와 잘섞인다
          • 깔끔하다!

SwiftLint를 사용하지 않고 코드 스타일 규약

  1. MARK는 함수 바로 윗줄에 작성

    • MARK 기준
      • configure

        // MARK: - Configuration

      • delegate

        // MARK: - Delegate : TableView

      • (+ 줄 띄어쓰기 하지 않음)

  2. Extension

    • 프로토콜 채택 시에만 사용
    • 컴파일 시간 이슈
  3. 클로저 매개변수

    • 로직이 필요할 경우 : 매개변수의 이름을 지정
    • 단순 반복하는 고차함수 : $ 사용
  4. return, self

    • 생략하지 않음
  5. 강제언래핑 (!)

    • 절대 - - 금지
  6. if else 문

    if 조건 {
      return aa
    } // 띄우기
    else {
    	return bb
    }
  7. guard let

    guard let a = "a",
    			let b = "b" else { return }  // 개행하지 않음
  8. 매개변수 개행 기준

    • configure에서 Page guide at column

      image

    • 매개변수 3개 이상부터 개행

변수명

  1. 변수명에는 전치사 없애기
  2. UIKit Import 시 Label, ImageView 등 타입명 명시
  3. get, set 지양

폴더링

  • 화면별로 폴더를 나눔
  • ViewController의 경우 따로 폴더에 속하지 않음
  • View, ViewModel, UseCase, Model 등은 폴더에 한번 더 감싸기
  • 매주(금) 폴더 미리 생성
- Scene
	- View
	- ViewModel
	- Usecase
	- Model

View 관련 코드 스타일

  • 스토리보드 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
} ()

Test

  • MVVM 을 제대로 활용
  • 테스트 단위 : internal function 기준
  • 테스트 코드 작성 시간 지정 : 30분
    • 18:30-19:00

기타

주차별 리더 👑

  • Week1 : 민상킹
  • Week2 : 태훈킹
  • Week3 : 지수퀸
  • Week4 : 수정퀸

체크인 시간

  • 주중 체크인 : 코어타임 근무 필수
  • 주중 체크아웃 : 19:00 이후 자율
    • task
  • 주말 : 커밋 금지 ❌
  • 6주차 [크런치 기간] 예외

코드 리뷰 방식

회고방법

  • 노션