Avatar ·

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?