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 проще, чем когда-либо. Пожалуйста, обратитесь к нему и дайте ему похвалу, которую он заслуживает.