Я бы не назвал этот метод плохой практикой как таковой , но он допускает ошибку, которая будет игнорироваться, что мне не особенно нравится. Использование такой конструкции довольно пагубно в том смысле, что ваша цепь молча прекратит работу без какого-либо уведомления. Это может быть проблемой, если ваш отдел контроля качества (вы в другой шляпе?) Не замечает тот факт, что ярлык больше не обновляется.
Я также не большой поклонник определенных репозиториев GitHub, которые вы вызываете, потому что они добавляют много ненужных имхо IMHO. Я предпочитаю более прямой код.
В моем примере приложения RxEarthquake я использую следующее:
public func asDriverLogError(_ file: StaticString = #file, _ line: UInt = #line) -> SharedSequence<DriverSharingStrategy, E> {
return asDriver(onErrorRecover: { print("Error:", $0, " in file:", file, " atLine:", line); return .empty() })
}
Так что, по крайней мере, запись ошибки сделана в отладке.
Я также считаю, что отличная альтернатива:
public func asDriverOrAbort(_ file: StaticString = #file, _ line: UInt = #line) -> SharedSequence<DriverSharingStrategy, E> {
return asDriver(onErrorRecover: { fatalError("Error: \($0) in file: \(file) atLine: \(line)") })
}
Используя такой метод, вы даете читателю понять, что абсолютно уверены, что цепочка не выдаст ошибку.