У меня есть вопрос о чем-то, может быть, не очень важном, но каждый раз, когда мне нужно решить, я чувствую, что можно написать по-другому.
Представьте, что я разрабатываю систему аутентификации, а затем я должен получить пин-код после отправки своего номера телефона.
Итак, я пишу UseCase
и, в этом случае, у меня есть интерактор и протокол Worker as.
Покажем код
import Foundation
protocol SendPinWorker {
func run(onResult: ((Result<Bool, Error>)->Void)?)
}
protocol SendPinUseCaseInteractor {
func error(e: SendPINUseCaseError)
func sent()
func processing()
}
enum SendPINUseCaseError {
case invalidPhone
case couldNotSend
}
class SendPINUseCase {
private let worker: SendPinWorker
private let output: SendPinUseCaseInteractor
init(worker: SendPinWorker, output: SendPinUseCaseInteractor) {
self.worker = worker
self.output = output
}
func execute(phone: String) {
guard !phone.isEmpty else {
self.output.error(e: .invalidPhone)
return
}
self.output.processing()
self.worker.run { [weak self] result in
guard let self = self else {
return
}
guard let sent = try? result.get(), sent else {
self.output.error(e: .couldNotSend)
return
}
self.output.sent()
}
}
}
Должен ли я поместить эти протоколы и перечисления в другой файл или все же следует использовать эти структуры в том же файле?