긍정적인 Guard 사용
Swift
레츠스위프트 30호를 읽다가, 와닿는 부분이 있어서 요약, 정리했다. 알고리즘 풀 때도 비슷하게 많이 쓰는데 (while !queue.isEmpty
) 이걸 읽고서 고쳐야겠다는 생각이 들었다.
Use Positive Guards
guard
키워드의 주요 용도
- 계산에 필요한 옵션을 언랩핑
- 기능에 대한 전제 조건을 명시
여기서는 두 번째 용도에 대해 설명한다.
guard !pieces.isEmpty else {
return
}
위 코드는 두 가지 단점이 있다.
- 오류가 발생하기 쉬움 →
!
를 잊기 쉽다. - 내재화하기 어렵다. 조건을 읽을 때, 코드의 의미를 제대로 이해하기 위해 읽은 단어의 의미를 뒤집어야 한다.
Collection
프로토콜에 사소한 도우미를 추가하여 이 문제를 쉽게 해결할 수 있다.
extension Collection {
var isNotEmpty: Bool {
return !self.isEmpty
}
}
// ...
guard pices.isNotEmpty else {
return
}