Segurança nula de Kotlin. Pensei em um recurso matador

Tendo conhecido a linguagem Kotlin pela primeira vez depois de muito tempo trabalhando com Java, fui impedido de pensar que null-safety pode ser útil e, em geral, uma variável sem null é um primitivo, mas eu mesmo não percebi isto.





Como se manifestou:





  1. Não é conveniente trabalhar com variáveis ​​e campos, que não podem ser nulos. Bem, eu simplesmente não entendia como algo não pode ser nulo.





  2. Não é conveniente trabalhar com tipos anuláveis. Bem maldita ?: !!





Em geral, o tempo foi passando, aos poucos fui me acostumando com o fato de que null pode não existir, até tentei fazer algo idiomático na minha opinião: valores default na forma de um objeto ... Em geral, tudo isso me deixou deprimido e queria muito escrever de novo em Java, já que estou acostumado a conviver com null. Com o passar do tempo, já comecei a conviver normalmente com os Kotlin's não anuláveis, como amigo um dia voltei para Java ... E depois de um tempo percebi uma coisa:





Quando trabalho com código legado (bem, este é todo o código que geralmente é escrito), então não entendo onde pode ser nulo e onde não pode ser, o que me faz fazer uma mudança de contexto da implementação da lógica de negócios para descobrir : pode haver nulo?





Considere sintéticos: temos uma entidade de número de telefone com campos: um número, um código de cidade internacional e um prefixo (bem, +7, +3, etc.), foi escrito antes de nós, há um mapeamento para o banco de dados, em geral, tudo está de acordo com os cânones do sangrento. Para negócios, todos os 3 campos do número de telefone devem ser.





Se estou em Java, quando trabalho com essa entidade, tenho muitas opções de como usá-la:





  1. Use-o como está, sem pensar sobre o que há de errado com o null (a produção descobrirá se corrigirmos o bug)





  2. Acesse o banco de dados e observe a restrição, certificando-se de que null não pode estar lá e você pode usar essa entidade com segurança sem verificações.





  3. Com as anotações @NotNull no lugar , pressione Ctrl + Q para ver a descrição.





  4. Processa todos os campos, supondo que nulo possa estar em todos os lugares.





  5. Escreva seu próprio código e, em seguida, lide com nulos em potencial.





  6. Você ainda pode pensar em opções ...





, , , 5 - , . , NPE.





:





  1. null .





  2. null.





, .





, Java , : , , , !! ?:





Bem, e mais uma vez sobre a propriedade de segurança nula em si: isso não é exatamente uma coisa técnica, mas sim sobre negócios, se em meu negócio qualquer valor não pode ser nulo, então deixe-o cair nos estágios iniciais, ao invés de conviver com alguns meio nulo ...








All Articles