ОСОБЛИВОСТІ РОЗРОБКИ ТА ВИКОРИСТАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ З ВИКОРИСТАННЯМ NULLABLE ТИПІВ
11.11.2021 20:47
[1. Інформаційні системи і технології]
Автор: Гречмак Д.В., студент, кафедра автоматизації проектування обчислювальної техніки, Харківський національний університет радіоелектроніки
Sound null safety - це функція, яка з'явилася в новій версії мови Dart 2.12, що вийшла разом з Flutter 2.0. До появи "Sound null safety" всі змінні в мові Dart могли набувати значення null. Якщо розробник забував додати перевірку на null перед використанням змінної, під час роботи програми раптово можна було отримати помилку. Розробники розуміють, що таку перевірку легко забути зробити, і якщо замість посилання на екземпляр певного типу ми отримуємо null, який «нічого не знає» про методи та стани екземпляра, ми маємо червоний екран смерті з «NoSuchMethodError».
Отже, у мові Dart ієрархія типів зазнає деяких змін:
Рис. 1 – Порівняння структури ієрархії типів Dart різних версій
Вирішити цю проблему покликаний null safety, основні принципи якого:
• Безпека коду за промовчанням - усі змінні, які ми створюємо, за промовчанням будуть non-nullable, доки ми не дозволимо їм іншої поведінки.
• Простота написання коду – не хотілося б в обмін на безпеку отримувати складності у написанні та розумінні коду.
• Несуперечність коду - якщо визначаємо якусь змінну як змінну non-nullable типу, то вона абсолютно точно ніколи не дорівнюватиме null. Загадкове "sound" перекладається саме як "несуперечність".
Null більше не є підтипом для всіх типів, а існує поруч із ними. Якщо є змінна типу String, то вона завжди міститиме рядок. Але на практиці, трапляються ситуації, коли потрібно використовувати null.
У такому випадку можна скористатися сусідом-компаньйоном типу, що припускає значення null. Цей тип - String?.
Користуватися змінними з "?" небезпечно, тому потрібно вдаватися до додаткових перевірок на null або спеціальних операторів.
Література:
1. Hunko M.A., Tkachov V.M. Development of a module for sorting the ipaddresses of user nodes in cloud firewall protection of web resourсes. Дев’ята міжнародна науково-технічна конференція «Сучасні напрями розвитку інформаційнокомунікаційних технологій та засобів управління». 2019. С. 30.
2. Tkachov V. Technology of Load Balancing in Anonymous Network Based on Proxy Nodes Cascade Platform / V. Tkachov, M. Hunko, M. Bondarenko, S. Artyomov // Четверта міжнародна науково-технічна конференція «Комп’ютерні та інформаційні системи і технології». Збірка наукових праць. Харків: ХНУРЕ. – 2020. – С. 82.
3. 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.
4. Гунько М. А. Розробка моделі інтелектуальної мобільної системи для своєчасного запобігання механічних перешкод / М. А. Гунько // «Інформаційне суспільство: технологічні, економічні та технічні аспекти становлення (випуск 49)» : матеріали Міжнар. наук. Інтернет-конф., 10 червня 2020 р. – Тернопіль, 2020. – С. 7–8.
5. Krivoulya G. Implementation of mobile eye tracking systems for preventing emergency situations based on monitoring of driver behavior / Krivoulya G., Tokariev V., Tkachov V., Hunko M // Проблеми інформатизації : тези доп. 7-ї міжнар. наук.-техн. конф., 13-15 листопада 2019 р., м. Черкаси, м. Харків, м. Баку, м. Бельсько-Бяла : [у 3 т.]. Т. 3 / Черк. держ. технолог. ун-т [та ін.]. – Харків, 2019. – С. 36.