1
resposta

Qual a vantagem de struct em relação a class no view model

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?

1 resposta

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software