코드 컨벤션 - boostcampwm-2021/iOS04-OwnMyWay GitHub Wiki

목적

코드 컨벤션의 목적은 한 사람이 짠 것처럼 코드 스타일을 통일시켜 가독성을 향상시키고 궁극적으로 유지보수를 쉽게 하는데 있습니다.

원칙

  • 기본적으로 private한 프로퍼티/메소드가 그렇지 않은 프로퍼티/메소드보다 하단에 위치합니다.
  • 가장 위에 프로토콜에서 선언한 프로퍼티/메소드가 위치합니다.
  • 함수에서 파라미터 label을 적극 활용하여 문장처럼 읽히도록 작성합니다.

규칙을 추가하거나 제거하고 싶다면 회의를 통해 정합니다. 의견차이가 좁혀지지 않는 경우, 팀장의 최종의견을 따라야 합니다!

전체적인 순서

  • Internal Properties
    • (ViewController) IBOutlet
    • Protocol implement properties
    • viewModel/usecase/repository
    • non-private properties
    • private properties
  • initializer
  • Internal Methods
    • override functions
    • non-private functions
    • private functions
    • objc functions
    • (ViewController) IBAction functions

함수명 네이밍

Presentation Layer

사용자가 시작한 액션일 경우, did_동사_로 이름을 짓습니다.

didEnterSearchText(by text: String)

뷰 생명 주기 등 시스템에 의한 액션일 경우, _did_동사로 이름을 짓습니다.

viewDidLoad()

Domain Layer

  • execute_ prefix 붙이기

Data Layer

  • 동사_변수
    • 예시: addLandmark()

🛠 Tools

  • SwiftLint
opt_in_rules:
  - closure_spacing
  - fatal_error_message
  - force_unwrapping
  - implicitly_unwrapped_optional
  - legacy_multiple
  - legacy_random
  - operator_usage_whitespace

disabled_rules:
  - multiple_closures_with_trailing_closure

indentation: 4
line_length: 100
identifier_name:
  min_length: 4
type_name:
  min_length: 4

🔑 Reference