Ayant rencontrĂ© le langage Kotlin pour la premiĂšre fois aprĂšs une longue pĂ©riode de travail avec Java, j'ai Ă©tĂ© rebutĂ© par l'idĂ©e que la sĂ©curitĂ© null peut ĂȘtre utile et, en gĂ©nĂ©ral, une variable sans null est une primitive, mais je n'ai moi-mĂȘme pas rĂ©alisĂ© il.
Comment ça s'est manifesté :
Il n'est pas pratique de travailler avec des variables et des champs, qui ne peuvent pas avoir de valeur null. Eh bien, je ne comprenais mĂȘme pas comment quelque chose ne pouvait pas ĂȘtre nul.
Il n'est pas pratique de travailler avec des types nullables. Bien foutu ?: !!
En gĂ©nĂ©ral, le temps a passĂ©, lentement j'ai commencĂ© Ă m'habituer au fait que null n'existait peut-ĂȘtre pas, j'ai mĂȘme essayĂ© de faire quelque chose d'idiomatique Ă mon avis : des valeurs par dĂ©faut sous la forme d'un objet... En gĂ©nĂ©ral, tout ça m'a conduit Ă la dĂ©pression et j'avais vraiment envie d'Ă©crire Ă nouveau en Java, car j'ai l'habitude de vivre avec null. Au fil du temps, j'ai dĂ©jĂ commencĂ© Ă vivre normalement avec Kotlin's not nullable, en tant qu'ami un jour je suis retournĂ© Ă Java... Et au bout d'un moment je me suis rendu compte d'une chose :
Lorsque je travaille avec du code hĂ©ritĂ© (enfin, c'est tout le code qui est gĂ©nĂ©ralement Ă©crit), alors je ne comprends pas oĂč il peut ĂȘtre nul et oĂč il ne peut pas l'ĂȘtre, ce qui me fait passer de la mise en Ćuvre de la logique mĂ©tier Ă la dĂ©couverte : peut-il y avoir null ?
ConsidĂ©rons les synthĂ©tiques : nous avons une entitĂ© de numĂ©ro de tĂ©lĂ©phone avec des champs : un numĂ©ro, un code de ville international et un prĂ©fixe (enfin, +7, +3, etc.), il a Ă©tĂ© Ă©crit avant nous, il y a un mappage vers la base de donnĂ©es, en gĂ©nĂ©ral, tout est selon les canons du sanglant. Pour les entreprises, les 3 champs du numĂ©ro de tĂ©lĂ©phone doivent ĂȘtre.
Si je suis en Java, lorsque je travaille avec cette entité, j'ai de nombreuses options pour l'utiliser :
Utilisez-le tel quel, sans penser à ce qui ne va pas avec null (la production le découvrira si nous corrigeons le bogue)
AccĂ©dez Ă la base de donnĂ©es et examinez la contrainte, en vous assurant ainsi que null ne peut pas ĂȘtre lĂ et vous pouvez utiliser cette entitĂ© en toute sĂ©curitĂ© sans vĂ©rifications.
Avec les annotations @NotNull en place , appuyez sur Ctrl + Q pour voir la description.
Traiter tous les champs, en supposant que null peut ĂȘtre partout.
Ăcrivez votre propre code, puis traitez le potentiel null.
Vous pouvez toujours penser Ă des options ...
, , , 5 - , . , NPE.
:
null .
null.
, .
, Java , : , , , !! ?:
Eh bien, et encore une fois Ă propos de la propriĂ©tĂ© de sĂ©curitĂ© nulle elle-mĂȘme : ce n'est pas tout Ă fait une chose technique, c'est plutĂŽt une question d'entreprise, si dans mon entreprise une valeur ne peut pas ĂȘtre nulle, alors laissez-la tomber au dĂ©but, plutĂŽt que de vivre avec certains un peu nul...