Нулевые атрибуты в контексте MVVMcross или любой структуры MVVM полезны в нескольких конкретных сценариях. Эти атрибуты помогают прояснить намерение вашего кода, что делает его более понятным и менее неоднозначным. Вот несколько подробных сценариев, где нулевые атрибуты особенно полезны:
1. Предотвращение нулевых справочных исключений **
В MVVMcross, как и в случае с другими рамками, с использованием нулевых эталонных типов помогает предотвратить нулевые эталонные исключения. Явно маркируя ссылочные типы как нулевые, разработчики вынуждены проверять NULL перед доступом к свойствам или методам, снижая риск ошибок во время выполнения. Это особенно важно в кроссплатформенной разработке, где разные платформы могут по-разному обрабатывать нули.
2. Выражение намерений и снижения двусмысленности **
Нулевые атрибуты делают код более выразительным, четко указав, может ли свойство или параметр метода быть нулевым. Эта ясность имеет решающее значение в рамках MVVM, где общепринята связывание данных и изменения свойства. Например, если свойство помечено как нулевое, оно немедленно передает, что оно не всегда имеет ценность, направляя других разработчиков о том, как с ним справиться.
3. Улучшение привязки данных **
В MVVMcross привязка данных является основной функцией. Нулевые атрибуты могут помочь гарантировать, что операции по связыванию данных более безопасны и более предсказуемы. Если свойство является нулевым, структура и другие разработчики будут знать, чтобы справиться с ней надлежащим образом, избегая неожиданных нулевых значений при привязке данных.
4. Улучшение документации и использования API **
При использовании нулевых атрибутов в API MVVMcross для пользователей этих API становится яснее, как их следует использовать. Например, если параметр метода помечен как нулевой, он указывает, что проходное нуль является действительным сценарием, который может повлиять на то, как метод ведет себя. Эта ясность помогает предотвратить неправильное использование и снижать необходимость в обширной документации по нулевой обработке.
5. Защита от атак недолюгается **
Подобно концепции в веб -приложениях, нулевые атрибуты могут защитить от сценариев, где данные могут быть пропущены намеренно или непреднамеренно. В MVVMcross, если свойство является нулевым и требуемым, оно гарантирует, что структура подтвердит его присутствие, предотвращая использование неожиданных значений по умолчанию.
6. Миграция в нулевые ссылки типы **
Поскольку C# эволюционирует с такими функциями, как нулевые эталонные типы, такие рамки, как MVVMcross, адаптируются путем включения нулевых атрибутов в свои API. Этот переход помогает разработчикам мигрировать свои проекты для более эффективного использования нулевых ссылочных типов, обеспечивая лучшую нулевую безопасность и снижение ошибок времени выполнения.
Таким образом, нулевые атрибуты в MVVMcross полезны для повышения ясности кода, предотвращения нулевых справочных исключений, повышения безопасности привязки данных и руководящего использования API. Они также играют решающую роль в адаптации к современным функциям C#, таким как нулевые ссылочные типы.
Цитаты:[1] https://stackoverflow.com/questions/43688968/what-does-it-mean-for-a-property-be-required и 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://stackoverflow.com/questions/52351636/mvvmcross-viewmodel-is-always-null-in-xamarin-android-but-it-is-in-xa
[7] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[8] https://github.com/mvvmcross/mvvmcross