Skip to content

Plano de arquitetura

Yago Marques edited this page Oct 24, 2022 · 5 revisions

Frameworks

Foram usados os frameworks nativos, oferecidos pela apple, segue a tabela:

Caso Framework
Testes unitários XCTest
Construção de interface UIKit

Rotas/Endpoints API

Base: https://rickandmortyapi.com/api

[GET] - /characters

Retorna todos os personagens, de maneira paginada, também é possível adicionar queries de filtro

obs: os personagens filtrados também são retornados de forma paginada

sem filtro:

https://rickandmortyapi.com/api/character

com filtro:

https://rickandmortyapi.com/api/character/?name=rick&status=alive

Métodos de requisição

URLSession com completion handler

Persistência com core data

A lista inicial de personagens da primeira requisição de sucesso vai persistir no core data, para funcionar como cache, caso o usuário abra o aplicativo sem internet

Entidade do core data:

Screen Shot 2022-10-23 at 21 06 17

Design Pattern Arquitetural: VIP - Arquitetura limpa

197085829-789447b5-14de-4b9a-8761-083099549ec9

por que VIP? porque era um pattern que estava estudando a teoria já faz um tempo, então me desafiar a colocar o VIP em prática foi um dos motivos. Além disso, o VIP separa praticamente todas as responsabilidades e não exige uma dependência de framework para reatividade, como combine, isso acabou facilitando o processo de desenvolvimento.

Comunicação entre classes: Delegate (injeção de dependência e inversão de controle)

O padrão delegate, junto com a prática de injeção de dependência e inversão de controle, ajudou bastante no entendimento do código e também na testabilidade, praticamente tudo poderia ter um mock, stub ou spy, tornando o sut totalmente testável.

Estrutura de pastas

produção:

Screen Shot 2022-10-23 at 21 04 04

testes:

Screen Shot 2022-10-23 at 21 04 35