코드 컨벤션 - 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
- StyleShare의 스위프트 스타일 가이드 채택
- Swift API Design Guidelines