0. 기본
컨벤션은 리팩토링시 적용하는게 아니라 코드를 짜는 즉시 적용합니다.
1. 일반
1.1 임포트
- 파일이 필요로 하는 최소의 모듈만을 임포트 합니다. 예를 들어, Foundation으로 충분하면 UIKit은 임포트하지 않습니다.
- 모듈 임포트는 알파벳 순으로 정렬합니다. 내장 프레임워크를 먼저 임포트하고, 개행으로 구분해 3rd-party 프레임워크를 임포트 합니다.
1.2 개행
- 개행에는 공백이 포함되지 않도록 합니다.
- 변수 선언, 조건문, 반복문, 함수 호출 사이에 개행을 줍니다.
1.3 들여쓰기
- 들여쓰기는 Xcode에서 제공하는 ctrl+i 를 눌렀을 때 적용되는 space를 사용합니다.
- 최대 가로 길이는 100characters를 사용합니다.
1.4 띄어쓰기
- 콜론(:)을 사용할 때는 콜론의 오른쪽에만 공백을 줍니다.
1.5 기능분리
- 조금이라도 기능이 다르면 독립적인 메서드로 분리합니다.
- 해당 코드가 재사용이 되면 독립적인 메서드로 분리합니다.
- viewDidLoad나 viewWillAppear에 들어갈 내용은 메서드로 분리합니다.
2. 네이밍
2.1 일반
- 약어 사용을 지양합니다.
- 변수, 상수, 클래스, 구조체, 열거형은 명사형으로 선언합니다.
- 메서드와 IBAction의 네이밍은 동사형으로 선언합니다.
2.2 IBAction
- 정확하게 연결된 제스쳐를 사용해서 선언합니다.
3. 기타
3.1 타입
- 타입 명시를 해줍니다.
- 바인딩할 시 타입 명시를 해주지 않습니다.
3.2 self
- 문법에서 모호함을 제거하기 위해 언어에서 필수로 요구하는 경우에만 self를 명시합니다.
3.3 String 관리
- NameSpace를 사용해서 String을 관리합니다.
3.4 extension
- 프로토콜 적용시 extension을 사용합니다.
4. 최적화
4.1 final
- 상속되지 않을 class에는 final을 붙여줍니다.
4.2 private
- 외부에서 사용되지 않을 프로퍼티나 메서드에는 private을 붙여줍니다.