Нульові посилання не "уникаються" більше, ніж винятки, принаймні, будь-хто, кого я коли-небудь знав чи читав. Я думаю, ти неправильно розумієш загальноприйняту мудрість.
Що погано - це спроба отримати доступ до нульової посилання (або перенаправити нульовий покажчик тощо). Це погано, оскільки він завжди вказує на помилку; ви ніколи б не зробити що - щось подібне на цілі, і якщо ви будете робити це навмисно, то , що ще гірше, тому що це робить його неможливо відрізнити очікуване поведінка від баггі поведінки.
Є певна бахрома група, які там просто дійсно ненавидять поняття недійсності за якою - то причини, але , як Ед указует , якщо у вас немає , null
або nil
тоді ви просто повинні замінити його чимось - то ще, що може привести до чого - то гірше, ніж збій (наприклад, корупція даних).
Насправді багато рамок охоплюють обидва поняття; наприклад, у .NET, часто зустрічається шаблон, - це пара методів, приставка яких має слово Try
(наприклад, TryGetValue
). У Try
випадку посилання встановлюється за замовчуванням (зазвичай null
), а в іншому випадку викидається виняток. Немає нічого поганого в будь-якому підході; обидва використовуються часто в середовищах, які їх підтримують.
Це дійсно все залежить від семантики. Якщо null
дійсне значення повернення, як у загальному випадку пошуку колекції, тоді повертайте null
. З іншого боку, якщо це не дійсне значення повернення - наприклад, пошук запису за допомогою первинного ключа, який прийшов із вашої власної бази даних - тоді повернення null
було б поганою ідеєю, оскільки абонент цього не очікує і, ймовірно, не перевірять це.
Справді дуже просто зрозуміти, який семантичний варіант використовувати: Чи має сенс результат функції бути невизначеним? Якщо так, ви можете повернути нульову посилання. Якщо ні, киньте виняток.