Durante a criação da HomeViewModel, foi utilizado struc no lugar de class, queria entender um pouco o porque dessa decisão, quais são as vantagens nesse caso?
Durante a criação da HomeViewModel, foi utilizado struc no lugar de class, queria entender um pouco o porque dessa decisão, quais são as vantagens nesse caso?
Oii Wilton, tudo bem?
No Swift, tanto structs
quanto classes
podem ser usadas para modelar dados e comportamentos, mas elas têm características importantes que podem influenciar essa decisão, especialmente em um contexto de MVVM.
Imutabilidade: Structs
são tipos de valor e são imutáveis por padrão. Isso significa que qualquer alteração em uma instância de uma struct
resulta na criação de uma nova instância. Isso pode ser vantajoso em ambientes multithread, pois reduz problemas de sincronização e estados inesperados.
Passagem por valor: Como structs
são passadas por valor, isso garante que cada componente ou função que recebe a struct
trabalha com uma cópia dela, preservando o encapsulamento e evitando efeitos colaterais indesejados. Isso é particularmente útil em view models onde o estado deve ser previsível e controlado.
Performance: Structs
podem ser mais rápidas em certos contextos porque são alocadas na stack em vez da heap (como as classes
). Isso pode resultar em alocações e desalocações mais rápidas, o que é benéfico para operações de alta frequência como atualizações de UI.
Simplicidade: Usar structs
pode levar a um design mais simples e menos propenso a erros, especialmente quando você não precisa de herança ou de referências múltiplas ao mesmo objeto, como é comum em view models.
No caso específico do HomeViewModel
, a escolha de uma struct
foi motivada pela necessidade de manter uma abordagem simples e eficiente pra gerenciar o estado da UI, sem se preocupar com complexidades adicionais de gerenciamento de memória e referências que vêm com classes
.
Um abraço e bons estudos.