Добавить протоколы внутри того же файла, что и контроллер

У меня есть вопрос о чем-то, может быть, не очень важном, но каждый раз, когда мне нужно решить, я чувствую, что можно написать по-другому.

Представьте, что я разрабатываю систему аутентификации, а затем я должен получить пин-код после отправки своего номера телефона.

Итак, я пишу 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()
        }
    }
}

Должен ли я поместить эти протоколы и перечисления в другой файл или все же следует использовать эти структуры в том же файле?

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *