La mejor forma de verificar null en Kotlin: comparación con null, llamada segura u operador Elvis?
¡Hola, colegas! Recientemente comencé a aprender Kotlin después de Java y me encontré con el problema de elegir la forma correcta de verificar null. En Kotlin, como entendí, hay muchos enfoques diferentes y estoy confundido sobre cuál se considera "best practice".
Por ejemplo, tengo este código:
```kotlin
data class User(val name: String?, val email: String?)
fun printUserName(user: User?) {
// Opción 1: Verificación if
if (user != null) {
println(user.name)
}
// Opción 2: Usando ?.let
user?.let {
println(it.name)
}
// Opción 3: Usando !!
println(user!!.name)
}
```
La primera opción me parece demasiado verbosa, la segunda es poco familiar, y la tercera sé que no debería usarse porque puede lanzar NPE. Pero, ¿qué elegir para diferentes situaciones?
También veo a menudo en código ajeno el uso del operador Elvis `?:` con `throw` o `return`. ¿Cuándo es apropiado? ¿Y hay alguna recomendación sobre el rendimiento de los diferentes métodos?