Os atributos anuláveis no contexto do MVVMcross, ou qualquer estrutura MVVM, são benéficos em vários cenários específicos. Esses atributos ajudam a esclarecer a intenção do seu código, tornando -o mais compreensível e menos ambíguo. Aqui estão alguns cenários detalhados em que atributos anuláveis são particularmente benéficos:
1. Prevenindo exceções de referência nula **
No MVVMcross, como em outras estruturas, o uso de tipos de referência anulável ajuda a evitar exceções de referência nula. Ao marcar explicitamente os tipos de referência como anuláveis, os desenvolvedores são forçados a verificar se há NULL antes de acessar propriedades ou métodos, reduzindo o risco de erros de tempo de execução. Isso é especialmente importante no desenvolvimento de plataformas cruzadas, onde diferentes plataformas podem lidar com nulos de maneira diferente.
2. Expressando intenção e redução de ambiguidade **
Os atributos anuláveis tornam o código mais expressivo, indicando claramente se um parâmetro de propriedade ou método pode ser nulo. Essa clareza é crucial nas estruturas MVVM, onde a ligação de dados e as alterações da propriedade são comuns. Por exemplo, se uma propriedade for marcada como anulável, transmite imediatamente que nem sempre pode ter um valor, orientando outros desenvolvedores sobre como lidar com isso.
3. Melhorando a ligação de dados **
No MVVMCROSS, a ligação de dados é um recurso principal. Os atributos anuláveis podem ajudar a garantir que as operações de ligação de dados sejam mais seguras e previsíveis. Se uma propriedade for anulável, a estrutura e outros desenvolvedores saberão lidar com isso adequadamente, evitando valores nulos inesperados durante a ligação de dados.
4. Melhorando a documentação e uso da API **
Ao usar atributos anuláveis nas APIs MVVMcross, fica mais claro para os usuários dessas APIs como devem ser usados. Por exemplo, se um parâmetro de método é marcado como anulado, indica que a passagem nula é um cenário válido, que pode afetar como o método se comporta. Essa clareza ajuda a evitar o uso indevido e reduz a necessidade de uma extensa documentação sobre o manuseio nulo.
5. Protegendo contra ataques de posting **
Semelhante ao conceito em aplicativos da Web, os atributos anuláveis podem proteger contra cenários em que os dados podem ser omitidos de forma intencional ou não intencional. No MVVMcross, se uma propriedade for anulável e necessária, garante que a estrutura validará sua presença, impedindo que valores inadimplentes inesperados sejam usados.
6. Migração para tipos de referência anuláveis **
À medida que o C# evolui com recursos como tipos de referência anuláveis, estruturas como MVVMcross estão se adaptando incorporando atributos anuláveis em suas APIs. Essa transição ajuda os desenvolvedores a migrar seus projetos a usar tipos de referência anuláveis com mais eficiência, garantindo uma melhor segurança nula e reduzindo os erros de tempo de execução.
Em resumo, os atributos anuláveis no MVVMCROSS são benéficos para melhorar a clareza do código, impedir exceções de referência nula, melhorar a segurança da ligação de dados e orientar o uso da API. Eles também desempenham um papel crucial na adaptação aos recursos modernos de C#, como tipos de referência anuláveis.
Citações:[1] https://stackoverflow.com/questions/43688968/what-does-it-mean-for-a-property-to-be-required-and-nullable
[2] https://learn.microsoft.com/en-us/dotnet/csharp/nullable-references
[3] https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/attributes/nullable-analysis
[4] https://xebia.com/blog/start-daling-with-nullable-reference-types/
[5] https://www.mvvmcross.com/mvvmcross-8.0.0-release/
[6] https://stackoverflow.com/questions/52351636/mvvmcross-viewmodel-is-always-null-in-xamarin-android-but-t-is-is-accessible-in-Xa
[7] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[8] https://github.com/mvvmcross/mvvmcross