반응형
Swift API Design Guidelines에 정의된 네이밍 규칙을 알아보자!
Naming 네이밍
1. 필요한 단어를 모두 포함하기
Bad
employees.remove(x) // 명확하지 않음
good
employees.remove(at: x) // x번째에 위치한 employee 제거
2. 불충분한 type 정보를 보충하기
Bad
func add(_ observer: NSObject, for keyPath: String)
grid.add(self, for: graphics)
good
func addObserver(_ observer: NSObject, forKeyPath path: String)
grid.addObserver(self, forKeyPath: graphics)
3. 메서드와 함수를 영어 문장처럼 사용할 수 있도록 하기
Bad
x.insert(y, position: z)
x.subViews(color: y)
x.nounCapitalize()
good
x.insert(y, at: z) “x, insert y at z”
x.subViews(havingColor: y) “x's subviews having color y”
x.capitalizingNouns() “x, capitalizing nouns”
4. factory method의 시작은 make로 시작하기
struct List {
func makeIterator() -> IteratorProtocol {
Iterator(self)
}
}
5. side-effect를 기반하기
- side-effect가 없는 것은 명사로 읽혀야 함.
e.g. x.distance(to: y) - side-effect가 있는 것은 동사로 읽혀야 함.
e.g. print(x), x.append(y) - mutating/nonmutating 메서드의 이름을 일관성 있게 짓기
(*nonmutating 메서드는 instance를 변경하지 않고 새로운 value를 return) - operation이 동사로 설명되는 경우
- mutating에는 동사의 명령형을 사용
- x.sort(), x.append(y)
- nonmutating에는 "ed" 또는 "ing"를 접미사로 붙여서 사용
- z = x.sorted(), z = x.appending(y)
- mutating에는 동사의 명령형을 사용
- operation이 명사로 설명되는 경우
- nonmutating에는 명사 사용
- x = y.union(z), j = c.successor(i)
- mutating에는 "form" 접두사 붙여서 사용
- y.formUnion(z), c.fromSuccessor(i)
- nonmutating에는 명사 사용
6. nonmutating인 Boolean 메서드와 프로퍼티는 리시버에 대한 주장으로 읽혀야 한다.
x.isEmpty, line1.intersects(line2)
7. 능력을 설명하는 프로토콜은 able, ible, ing 사용하기
8. types, properties, variables, constants는 명사로 읽혀야 한다.
9. 용어 제대로 사용하기
- 일반적인 단어가 의미를 더 잘 전달한다면 잘 알려져 있지 않은 용어 사용하지 않기
- 전문 용어를 사용한다면 확립된 의미를 사용하기
- 약어(줄임말, abbreviations)를 피하기
- 관례 따르기. 대부분의 프로그래머가 친숙한 용어 사용하기
반응형
'프로그래밍 언어 > Swift' 카테고리의 다른 글
읽기 좋은 코드 작성하기 #2 Conventions (0) | 2022.04.19 |
---|---|
[Swift] Random String 만들기 (0) | 2021.01.25 |
[Swift] 싱글톤 패턴 (Singleton Pattern) (0) | 2020.04.21 |
[Swift] 전처리 매크로 (0) | 2020.04.16 |
[Swift] 윤년 계산기 (0) | 2019.07.05 |