Avatar ·

Melhor maneira de verificar null em Kotlin: comparação com null, chamada segura ou operador elvis?

Olá, colegas! Recentemente comecei a estudar Kotlin depois de Java e me deparei com o problema de escolher a maneira correta de verificar null. Em Kotlin, como entendi, existem muitas abordagens diferentes, e fiquei confuso sobre qual delas é considerada 'best practice'. Por exemplo, tenho este código: ```kotlin data class User(val name: String?, val email: String?) fun printUserName(user: User?) { // Opção 1: Verificação if if (user != null) { println(user.name) } // Opção 2: Usando ?.let user?.let { println(it.name) } // Opção 3: Usando !! println(user!!.name) } ``` A primeira opção me parece muito verbosa, a segunda é incomum, e a terceira eu sei que não deve ser usada, pois pode lançar NPE. Mas o que escolher para diferentes situações? Também vejo frequentemente em código alheio o uso do operador elvis `?:` com `throw` ou `return`. Quando isso é apropriado? E existem recomendações de desempenho para diferentes abordagens?