-
Notifications
You must be signed in to change notification settings - Fork 3
CodeConvention
yuhaeun edited this page Apr 5, 2024
·
3 revisions
- 80자
- 들여쓰기는 탭(4 space)
-
콜론(:)
오른쪽에만 공백 - 연산자 오버로딩 함수 정의에서는 연산자와 괄호 사이에 한 칸 띄어씁니다.
-
함수 정의가 최대길이를 넘는다면 파라미터 기준으로 줄바꿈
func collectionView( _ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath ) -> UICollectionViewCell { // doSomething() }
func task( name: String, age: Int ) -> Human { //doSomething() }
-
최대 길이를 넘지 않아도,
인자가 2개 이상
이라면 파라미터 기준으로 줄바꿈 -
리턴값이 최대길이를 넘는다면 한줄에는 리턴타입만 명시
func collectionView( ) -> UICollectionView.SupplementaryRegistration<MagazineFooterView> { // doSomething() }
- 클로저 파라미터 2개 이상일 시 호출 컨벤션
UIView.animate(withDuration: 0.25) {
// doSomething()
} completion: { finished in
// doSomething()
}
)
if let user = self.a(),
let name = user.b(),
user.gender == .female {
// ...
}
- else에 제어구문만 있다면 한줄로 작성
guard let user = self.veryLongFunctionNameWhichReturnsOptionalUser(),
let name = user.veryLongFunctionNameWhichReturnsOptionalName(),
user.gender == .female
else { return,break,continue }
guard let user = self.veryLongFunctionNameWhichReturnsOptionalUser(),
let name = user.veryLongFunctionNameWhichReturnsOptionalName(),
user.gender == .female
else {
self.name = name
return
}
if a == b {
var a = aslkdjf
asdfkjl = asdfklsjadlf
} else {
}
- 최대길이를 넘지 않으면 한줄에 명시 가능
tempArr.reduce(0, +)
tempArr.filter { $0 > $1 }
tempArr.map { self.xx = $0 + $1 }
- () → Void
- 인자 괄호사용하지 않음
- 중첩 클로저일 때는 상위 클로저의 인자를 명시한다
a.map { a, b in
b.map {
$0
}
- 위 아래는 빈줄로 기입
- 알파벳 순으로 정렬
// 내장 프레임워크
import UIKit
// 모듈
import Core
import Domain
// 서브파티
import SwiftyColor
import SwiftyImage
import Then
import URLNavigator
struct SearchResultView: View {
**// 우선순위: public 변수 -> private, fileprivate 변수**
**// PROPERTY**
1. 의존성 변수
2. Rx관련 변수
3. View관련 변수
**// FUNCTION**
4. init
5. Life Cycle
6. configureUI
7. bind
8. objc
9. override func
}
10. protocol별로 extension 분리
extension SearchResultView: ADelegate {
}
extension SearchResultView: BDelegate {
}
11. 중첩타입 extension 으로 분리
extension ViewModel {
enum Status {
case fetching, recieve
}
}
- lowerCamelCase!!!가 우선
var urlSession
var sessionUrl
var maxInt
var intMax
- case 뒤는 줄바꿈
switch a {
case .a:
print("하이")
case .b:
print("바이")
}