web-dev-qa-db-fra.com

Si NULL est une erreur de milliards de dollars, quelle est la solution pour représenter un objet non initialisé?

Cela vient avec un débat avec mon collègue que j'utilise NULL comme un état d'objet initial.

type Value = Node | null
const [value, setValue] = React.useState<Value>(null)

function test(v: Value) {
  if (value === null) // Do something
  else // Do something
}

Je suis curieux si - NULL est une erreur . Comment est-il résolu dans des langues qui ne soutiennent pas les pointeurs NULL?

36
Mengo

La plupart des dangers associés à une tige nulle de la manière dont les implémentations CONNES C traitent. Dans les langues où des tentatives de désarférence, un pointeur NULL est systématiquement piégé, un pointeur/référence nul peut entraîner une interruption de manière rudicielle à la suite d'essayer de traiter des données non initialisées, mais cette résiliation aurait été la norme dans des langues fortement piégées avec ou sans null. Le problème est que la manière dont le pointeur de poignée CRithmétic le rend cher de s'assurer que le code ne prendra pas par inadvertance un pointeur NULL, appliquez un décalage avec un pointeur qui n'a pas de sens mais n'est plus reconnaissable comme un pointeur NULL ou WALLUD. Tenter d'accéder à un tel pointeur pourrait fermer un programme, mais cela peut également corrompre des données sans fermer le programme, permettant ainsi aux données corrompues de remplacer ce qui aurait été de bonnes données sur le disque.

0
supercat