delegate 함수 네이밍에도 컨벤션이 존재한다.
그냥 동작을 이름으로 사용하면 중복으로 생성되는 경우가 많아 어떤 객체에서 동작하는 함수인지 알기 어렵다.
protocol MoreButtonDelegate: AnyObject {
func saveStatus(_ isMore: Bool)
func update()
}
protocol SeriesButtonDelegate: AnyObject {
func update()
}
위 경우, delegate?.update()로 사용한다면 누구를 대신하여 업데이트하려는 것인지 메서드 이름만으로는 알기 어렵다.
따라서 delegate 주체의 이름을 앞에 넣어주는 것이 컨벤션이다.
protocol MoreButtonDelegate: AnyObject {
func moreButtonSaveStatus(_ isMore: Bool)
func moreButtonUpdateSummaryStack()
}
protocol SeriesButtonDelegate: AnyObject {
func seriesButtonContentsUpdate()
}
(제대로 바꾼건지 확신은 안들지만..) 일단 위처럼 동작을 위임하는 주체의 이름을 메서드 어두에 붙여주어야 한다.
기존에는 코딩키를 따로 사용하지 않아 언더바가 포함된 JSON 데이터 형식을 그대로 프로퍼티 이름으로 사용하였다.
struct Book: Codable {
let release_date: Date
}
그러나 프로퍼티 이름에 언더바를 사용하는 것은 일반적인 네이밍 방식이 아니기에 코딩키를 사용하여 수정하였다.
struct Book: Codable {
let releaseDate: Date
enum CodingKey: String, CodingKey {
case releaseDate = "release_date"
}
}
| : OR 비트 연산자& : AND 비트 연산자-> 보통 비트 연산을 하지 않다보니 || 혹은 &&을 많이 사용하여 위 연산자들의 존재를 잊고 있었다..
이번 문제는 문자열을 활용해서도 풀 수 있었지만, 비트 연산자를 활용하자 더 적은 코드로 반복되지 않게 풀 수 있었다.