На конференцията за актуализиране в Прага, на която наскоро присъстваха някои от нас от Payments at Collector bank, една от най-интересните сесии, на които отидохме, беше разговорът на Jarod Paersons за „Нулеви референтни типове“.

Нулеви референтни типове е нова функция, въведена в c# 8, която ви помага да намирате грешки, свързани с нулеви стойности във вашия код.
Можете да мислите за това като за подсказки (облечени като предупреждения), където потенциални NullReferenceExceptions могат да бъдат хвърлени по време на изпълнение.

Разрешаване на нищожност

След като използвате c# 8, е доста лесно да активирате тази функция, или като активирате за цял проект, или за конкретен файл.

Активирането на това във файлове е толкова лесно, колкото просто да напишете „#nullable enable“ в горната част

Също така имате възможност да активирате и деактивирате функцията в части от файла, ако работите например с големи файлове

Предупреждения и отстраняване на проблеми

След като активирате, ще започнете да получавате предупреждения за потенциални нулеви проблеми във вашия код.

Повечето от тях лесно се коригират, като се реши дали свойствата могат/трябва някога да бъдат нулеви или не.

Например това предупреждение за свойството Име

Може да се коригира чрез маркиране на свойството като nullable

Или инициализиране на тези стойности в конструктора

Ако не маркирате свойството като null, ще получите предупреждение, когато се опитате да зададете свойството на null

Възможно е също така да игнорирате предупрежденията с помощта на удивителен знак, ако е необходимо.
Добър пример за това е например използването на default

Използване досега, в наши проекти

Поради донякъде голяма кодова база решихме в началото, че нашият подход засега ще бъде да активираме нищожност във файловете, когато променим или добавим нещо ново.

Всъщност първоначално се опитахме да активираме нищожност за всички проекти в нашето най-голямо решение, но бяхме потопени в предупреждения.

Използваме тази функция в повечето от нашите проекти за продукта Collector Checkout от няколко седмици и досега нашият екип се радва на тази функция.
Това е страхотен инструмент, за да можете да намерите случаите, които често се пренебрегват, и да подобрите качеството на вашия код.

Дори и да правим прегледи на кода за всичките си ангажименти и да имаме страхотно тестово покритие в нашите различни проекти, вече успяхме да открием няколко проблема при активирането на тази функция в съществуващ код.

Като цяло, страхотна функция!