Nullacyjne atrybuty w kontekście MVVMCROSS lub dowolnego ram MVVM są korzystne w kilku konkretnych scenariuszach. Atrybuty te pomagają wyjaśnić zamiar kodu, co czyni go bardziej zrozumiałym i mniej niejednoznacznym. Oto kilka szczegółowych scenariuszy, w których zerowe atrybuty są szczególnie korzystne:
1. Zapobieganie wyjątkom odniesienia zerowych **
W MVVMCROSS, podobnie jak w przypadku innych frameworków, użycie zerowych typów referencyjnych pomaga zapobiegać zerowym odniesieniu wyjątkom. Już wyraźnie oznaczając typy referencyjne jako zerowe, programiści są zmuszeni do sprawdzenia NULL przed uzyskaniem dostępu do właściwości lub metod, zmniejszając ryzyko błędów wykonawczych. Jest to szczególnie ważne w rozwoju międzyplatformowych, w których różne platformy mogą inaczej obsługiwać zerowe.
2. Wyrażanie intencji i zmniejszanie dwuznaczności **
Atrybuty zerowe sprawiają, że kod jest bardziej ekspresyjny, wyraźnie wskazując, czy właściwość lub parametr metody może być zerowy. Ta jasność ma kluczowe znaczenie w ramach MVVM, w których powiązanie danych i zmiany właściwości są powszechne. Na przykład, jeśli właściwość jest oznaczona jako zerowa, natychmiast przekazuje, że nie zawsze może mieć wartość, prowadząc innych programistów, jak sobie z nią poradzić.
3. Ulepszanie wiązania danych **
W MVVMCROSS wiązanie danych jest podstawową cechą. Atrybuty zerowe mogą pomóc w zapewnieniu, że operacje wiązania danych są bezpieczniejsze i bardziej przewidywalne. Jeśli właściwość jest zerowa, framework i inni programiści będą wiedzieć, aby odpowiednio ją obsługiwać, unikając nieoczekiwanych wartości zerowych podczas wiązania danych.
4. Ulepszanie dokumentacji i użycia interfejsu API **
Podczas korzystania z zerowych atrybutów w interfejsach API MVVMCROSS staje się wyraźniejsze dla użytkowników tych interfejsów API, w jaki sposób należy ich użyć. Na przykład, jeśli parametr metody jest oznaczony jako zerowy, wskazuje, że przejście NULL jest prawidłowym scenariuszem, który może wpłynąć na sposób zachowania metody. Ta przejrzystość pomaga zapobiegać niewłaściwemu użyciu i zmniejsza potrzebę obszernej dokumentacji w zakresie obsługi zerowej.
5. Ochrona przed atakami podważającymi **
Podobnie jak koncepcja w aplikacjach internetowych, zerowe atrybuty mogą chronić przed scenariuszami, w których dane mogą zostać pominięte celowo lub nieumyślnie. W MVVMCROSS, jeśli właściwość jest zerowa i wymagana, zapewnia, że ramy potwierdzi jego obecność, zapobiegając użyciu nieoczekiwanych wartości domyślnych.
6. Migracja do zerowych typów referencyjnych **
W miarę ewolucji C# z funkcjami takimi jak zerowe typy odniesienia, ramy takie jak MVVMCROSS są dostosowywane poprzez włączenie zerowych atrybutów do ich interfejsów API. To przejście pomaga programistom migrując swoje projekty w celu skuteczniejszego korzystania z zerowych typów referencyjnych, zapewniając lepsze bezpieczeństwo zerowe i zmniejszając błędy czasu wykonawczego.
Podsumowując, zerowe atrybuty w MVVMCROSS są korzystne dla zwiększania jasności kodu, zapobiegania zerowym wyjątkom odniesienia, poprawy bezpieczeństwa wiązania danych i korzystania z interfejsu API. Odgrywają również kluczową rolę w dostosowywaniu się do nowoczesnych funkcji C#, takich jak zerowe typy referencyjne.
Cytaty:[1] https://stackoverflow.com/questions/43688968/what-does-it-mean-for-a-property-to-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-dealing-with-nullable-reference-types/
[5] https://www.mvvmcross.com/mvvmcross-8.0.0-release/
[6] https://stackaverflow.com/questions/52351636/mvvmcross-viewmodel-is-always-null-in-xamarin-android-but-it-is-accessible-in-xa
[7] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[8] https://github.com/mvvmcross/mvvmcross