2
respostas

Duvidas sobre o Padrão VIP

Giovanna,

Por que colocar uma struct dentro da outra? Não seria melhor criar Structs separadas?

E não é melhor conectar o VIP no router?

private func setup() { let viewController = self let interactor = NewsListInteractor() let presenter = NewsListPresenter()

    viewController.interactor = interactor
    interactor.presenter = presenter
    presenter.viewController = viewController
}
2 respostas

Bom dia/tarde/noite!

Na arquitetura VIP (View, Interactor, Presenter), cada camada tem um papel claro, e a conexão entre elas é essencial para garantir uma boa separação de responsabilidades e uma comunicação adequada.

Por que colocar uma struct dentro da outra?

Essa prática pode ser usada para agrupar funcionalidades que pertencem a um mesmo contexto. No entanto, criar structs separadas pode ser mais vantajoso em termos de clareza, reutilização e manutenção do código. Na VIP, agrupar dados ou funcionalidades diretamente relacionadas dentro de uma mesma struct faz sentido para manter a coesão, mas isso vai depender muito da complexidade da lógica e de quantas vezes esses elementos são reutilizados.

Se os dados ou funcionalidades agrupadas dentro de uma struct podem ser reutilizados em outras partes do app, seria melhor separá-las em structs diferentes. Separar as structs torna o código mais reutilizável.

Não é melhor conectar o VIP no router?

O router na arquitetura VIP tem como principal responsabilidade a navegação entre telas, mas ele não deve ser o ponto de conexão do VIP diretamente. A conexão entre o ViewController, o Interactor e o Presenter deve ocorrer dentro da própria cena (ou módulo) VIP.

O router é geralmente usado para mover o usuário entre diferentes cenas ou telas, mas o ciclo de comunicação da camada VIP (View, Interactor, Presenter) não deve passar pelo router. O router pode, sim, ser usado para configurar a cena e iniciar esse ciclo de comunicação, mas depois dessa configuração inicial, o ViewController deve se comunicar diretamente com o Interactor e Presenter para processar os dados e renderizar a interface.

Abraços.

Bom complemento. Parabéns.