<aside> 🍎
아카데미 깃허브 swift-style-guide의 내용을 참고했고, 논의하면서 정해봅시다!
Clean Swift를 쓰기 위해 같이 공부 고고링 가보자구~
</aside>
<aside> 🔥
아래 보이는 것처럼 코딩 컨벤션 규칙을 위반한 경우,
노랑색 Warning을 발생시키거나, 빨강색 Error를 런타임에 발생시키는 라이브러리를 프로젝트에 적용해야합니다.
프로젝트에는 이미 적용이 되어있으니, 여러분의 맥북에 SwiftLint를 설치하기만 하면 됩니다 !
터미널에 순서대로 코드를 작성해주세요.
brew install swiftlint
→ Homebrew를 사용해서 mac에 Swiftlint를 적용시키는 코드which swiftlint
→ lint가 설치된 파일 경로를 확인 “/opt/homebrew/bin/swiftlint”로 나와야 합니다!swiftlint —version
→ 설치된 Swiftlint의 버전 확인이제 다시 Xcode를 빌드해보면 Lint가 적용되어야 합니다!
적용이 안되면 저한테 헬프콜 주세요~
</aside>
변수, 상수, 함수, 열거형 case 이름은 **lowerCamelCase
**를 사용합니다.
배열과 같이 복수의 의미를 담고 있는 변수는 ~List
가 아니라 ~s
를 붙여 사용하도록 합니다.
<aside> 🤔
Why?
: List라는 이름이나, Array라는 이름은 이미 사용중인 네임이죠. (SwiftUI에서도 List라는 Component가 따로 있으니)
의미가 중복되지 않도록, 명확하게 복수형으로 구분하는 것을 권장합니다.
</aside>
var categories: [String] // ✅ Good
var categoryList: [String] // ❌ Bad
함수는 일반적으로 동사원형으로 시작하지만, Event-Handling 함수의 경우에는 (조동사 + 동사원형)으로 시작합니다. 주어는 유추 가능한 경우 생략할 수 있습니다.
<aside> 🤔
Why?
: 팀 내 일관성을 유지하는 네이밍과, 코드를 보고 시점을 유추하는데 가장 많이 통용되는 방법이라 저희 팀도 이 규칙을 따르고자 합니다.
</aside>
will~
은 특정 행위가 일어나기 전을 의미합니다.did~
는 특정 행위가 일어난 직후를 의미합니다.// ✅ Good
func didFinshSession() { ... }
func scheduleDidChange() { ... }
// ❌ Bad
func handleSessionEnd() { ... }
func scheduleChanged() { ... }
데이터를 가져오는 함수의 경우 get~
사용을 지양하고, request~
나 fetch~
사용을 지향합니다.
<aside> 🤔
Why?
: get이라는 표현이 “무엇을 가져온다”의 의미만 주는 포괄적인 이름입니다.
그래서 클린 코드의 원칙으로 “더 명확한 의도”를 드러내기 위한 규칙을 설정합니다.
</aside>
request : 에러가 발생하거나, 실패할 수 있는 비동기 작업에 사용합니다. (주로 네트워크 요청)
fetch : 요청이 실패하지 않고 결과를 바로 반환하는 작업에 사용합니다. (주로 데이터 탐색)
// ✅ Good
func requestData() -> Data? { ... }
func fetchData() -> Data { ... }
// ❌ Bad
func getData() -> Data? { ... }
구조체, 클래스, 열거형 이름, 프로토콜은 **UpperCamelCase
**를 사용합니다.
주석은 협업에 있어 가독성을 높이고 다른 사람의 코드를 이해하는 중요한 코드입니다.
과하게 사용하지 않는 것을 목표로 합니다. 냅다 모든 코드에 주석 붙이기 x
함수는 기본적으로 무엇을 수행하는지. 무엇을 반환하는지 설명하고 / null 효과나 Void 반환은 주석을 생략합니다.