Sound null safety - це функція, яка з'явилася в новій версії мови Dart 2.12, що вийшла разом з Flutter 2.0. До появи "Sound null safety" всі змінні в мові Dart могли набувати значення null. Якщо розробник забував додати перевірку на null перед використанням змінної, під час роботи програми раптово можна було отримати помилку. Розробники розуміють, що таку перевірку легко забути зробити, і якщо замість посилання на екземпляр певного типу ми отримуємо null, який «нічого не знає» про методи та стани екземпляра, ми маємо червоний екран смерті з «NoSuchMethodError».
Рис. 1 – Порівняння структури ієрархії типів Dart різних версій
Вирішити цю проблему покликаний null safety, основні принципи якого:
• Безпека коду за промовчанням - усі змінні, які ми створюємо, за промовчанням будуть non-nullable, доки ми не дозволимо їм іншої поведінки.
• Простота написання коду – не хотілося б в обмін на безпеку отримувати складності у написанні та розумінні коду.
• Несуперечність коду - якщо визначаємо якусь змінну як змінну non-nullable типу, то вона абсолютно точно ніколи не дорівнюватиме null. Загадкове "sound" перекладається саме як "несуперечність".
Null більше не є підтипом для всіх типів, а існує поруч із ними. Якщо є змінна типу String, то вона завжди міститиме рядок. Але на практиці, трапляються ситуації, коли потрібно використовувати null.
У такому випадку можна скористатися сусідом-компаньйоном типу, що припускає значення null. Цей тип - String?.
Користуватися змінними з "?" небезпечно, тому потрібно вдаватися до додаткових перевірок на null або спеціальних операторів.
Література
1. V Tkachov Cellular Technology Based Overlay Networks for the Secure Control of Intelligent Mobile Objects: Models and Numerical Study/ V Tkachov, A Kovalenko, V Kharchenko, M Hunko // ICTERI 2021: Information and Communication Technologies in Education, Research, and Industrial Applications. – Kherson, Ukraine, October 2, 2021. – Pp. 42-63.
2. V Tkachov Cellular Technology Based Overlay Networks for the Secure Control of Intelligent Mobile Objects/ V Tkachov, A Kovalenko, V Kharchenko, M Hunko // ICTERI 2021: Information and Communication Technologies in Education, Research, and Industrial Applications. – Kherson, Ukraine, October 2, 2021. – Pp. 480-490.
3. M Hunko. Application Architecture For Obtaining Data From Scientometric Databases / M Hunko, V Tkachov, O Liashenko, J Rabčan // 2022 IEEE 3rd KhPI Week on Advanced Technology (KhPIWeek). – Kharkiv, 2022.
4. Tkachov V. Principles of Constructing an Overlay Network Based on Cellular Communication Systems for Secure Control of Intelligent Mobile Objects / Vitalii Tkachov, Andriy Kovalenko, Mykhailo Hunko and Kateryna Hvozdetska // Информационные технологии и безопасность. Материалы XIX Международной научно-практической конференции ИТБ-2020. – К.: ООО "Инжиниринг", 2020. – С. 51-55.
5. Hunko M. A. The software tool for identifying the cellular network status of a mobile device under the Android operating system / M. A. Hunko, K. A. Voropaeva // Радіоелектроніка та молодь у ХХІ столітті : матеріали 25-го Міжнародн. молодіжн. форуму, 20-22 квітня 2021 р. – Харків : ХНУРЕ, 2021. – Т. 5, секція 4. – С. 102-103.