Dart — популярный язык программирования, известный своей простотой использования и гибкостью. Одной из особенностей, которая отличает Dart от других языков, является его надежная защита от нулевых значений, которая была представлена в Dart 2.12. В этой статье мы рассмотрим, что такое надежная нулевая безопасность, почему она важна и как она работает в Dart.
Оглавление
- Что такое звуковая нулевая безопасность?
- Почему важна безопасность Sound Null?
- Как работает Sound Null Safety в Dart?
- Заключение
Вы можете использовать DartPad, чтобы поиграть с кодом и понять, как он работает на https://dartpad.dev/
Что такое звуковая нулевая безопасность?
Надежная защита от пустых значений – это функция языков программирования, предназначенная для предотвращения ошибок нулевых ссылок. Ошибки нулевой ссылки возникают, когда переменная объявлена, но не имеет значения, что приводит к сбою программы или неожиданному поведению. Надежная безопасность нулевых значений решает эту проблему, гарантируя, что переменные либо не равны нулю, либо могут принимать значения NULL.
Пожалуйста, имейте в виду, что, хотя нулевые значения сами по себе не являются плохими, важно гарантировать, что они не будут неуместно размещены в нашей программе.
В Dart переменные по умолчанию не обнуляемые. Чтобы сделать переменную обнуляемой, вы можете использовать оператор ?
, чтобы утверждать, что переменная может иметь значение null. Например:
String nonNullableString = "Hello, world!";//non-nullable variables generally require a value when initaillized. String? nullableString = null; print(nonNullableString.toUpperCase()); // "HELLO, WORLD!" print(nullableString!.toUpperCase()); // Throws an error because nullableString is null. Refer to why is ! operator used.
В приведенном выше примере nonNullableString
— это ненулевая переменная, которую можно безопасно использовать без необходимости проверки нуля. nullableString
, с другой стороны, является переменной, допускающей значение NULL, которая требует, чтобы оператор !
утверждал, что она не равна NULL, прежде чем ее можно будет использовать.
Почему важна безопасность Sound Null?
Надежная защита от null имеет несколько преимуществ, которые делают ее важной функцией в языках программирования. Прежде всего, это помогает предотвратить ошибки с нулевыми ссылками, которые могут привести к сбою или неожиданному поведению программ. Гарантируя, что переменные не являются нулевыми или могут принимать значения NULL, надежная безопасность нулевых значений упрощает написание кода, который является более надежным и менее подверженным ошибкам.
Кроме того, надежная нулевая безопасность также делает код более читабельным и простым в сопровождении. Явно объявляя, является ли переменная допускающей или не допускающей значение NULL, разработчики могут быстро и легко понять состояние переменной и то, как ее можно использовать. Это может сэкономить время и усилия при отладке кода или добавлении новых функций в существующие кодовые базы.
Наконец, надежная нулевая безопасность также поощряет лучшие методы кодирования, упрощая обнаружение ошибок во время компиляции, а не во время выполнения. Это может привести к более быстрым циклам разработки и более эффективному коду, который с меньшей вероятностью потребует тщательного тестирования и отладки.
Как работает Sound Null Safety в Dart?
В Dart надежная безопасность нулевых значений реализована за счет использования переменных, допускающих и не допускающих значение null, а также оператора !
и необязательных именованных параметров.
Обнуляемые и не обнуляемые переменные
Как упоминалось ранее, переменные в Dart по умолчанию не могут принимать значение NULL. Чтобы сделать переменную, допускающую значение NULL, не допускающей значение NULL, вы можете использовать оператор !
, чтобы подтвердить, что переменная не равна NULL. Например:
String nonNullableString = "Hello, world!"; String? nullableString = null; print(nonNullableString.toUpperCase()); // "HELLO, WORLD!" print(nullableString!.toUpperCase()); // Throws an error because nullableString is null
В приведенном выше примере nonNullableString
– это переменная, не допускающая значения NULL, которую можно безопасно использовать без необходимости проверки значений NULL. nullableString
, с другой стороны, является переменной, допускающей значение NULL, которая требует, чтобы оператор !
утверждал, что она не равна NULL, прежде чем ее можно будет использовать.
Оператор !
Оператор !
используется для подтверждения того, что переменная, допускающая значение NULL, не является нулевой. Когда используется оператор !
, программа предполагает, что переменная не является нулевой, и позволяет использовать ее без необходимости проверки на нуль. Например:
String? nullableString; print(nullableString.runes); // throws error as the String value is null //when we know that the value won't be null before using it, ! operator can be used print(nullableString!.runes)
В приведенном выше примере оператор !
используется для подтверждения того, что nullableString
не является нулевым, перед вызовом метода toUpperCase()
. Если бы nullableString
было нулевым, программа выдала бы ошибку.
Необязательные именованные параметры
Еще одна особенность надежной нулевой безопасности в Dart — необязательные именованные параметры. Необязательные именованные параметры позволяют разработчикам определять в функции параметры, которые не требуется передавать при вызове функции. Эти параметры отмечены ?
, чтобы указать, что они могут принимать значения NULL. Например:
void printMessage(String message, {String? author}) { print(message); if (author != null) { print("Author: $author"); } } printMessage("Hello, world!"); // Prints "Hello, world!" printMessage("Hello, world!", author: "John"); // Prints "Hello, world!" and "Author: John"
В приведенном выше примере параметр author
помечается как допускающий значение NULL путем добавления ?
после его типа. Это означает, что параметр author
является необязательным и его не нужно передавать при вызове функции printMessage()
. Если параметр author
не передан, по умолчанию он будет равен null
. Это позволяет разработчикам писать более гибкий и повторно используемый код.
Заключение
Надежная защита от пустых значений — важная функция языков программирования, которая помогает предотвратить ошибки нулевых ссылок и делает код более читабельным, удобным и эффективным. В Dart надежная безопасность нулевых значений реализована за счет использования переменных, допускающих и не допускающих значение null, оператора !
и необязательных параметров. Используя эти функции, разработчики могут писать более надежный и эффективный код, менее подверженный ошибкам и более простой в обслуживании.
Это видео сделало для меня изучение Dart проще, чем когда-либо. Пожалуйста, обратитесь к нему и дайте ему похвалу, которую он заслуживает.