Si estás empezando con Kotlin, una de las características que más van a ayudarte a escribir mejor código son las data class.
¿Qué es una data class?
La data class es un tipo especial de clase que se suele usar en programación orientada a objetos para almacenar y/o traspasar datos entre métodos o capas de la aplicación. Se caracteriza por solamente tener atributos y métodos de acceso (setters y getters)
¿Qué beneficio me da usar una data class?
En programación últimamente se habla mucho del concepto de inmutabilidad. En términos simples, aplicar inmutabilidad en nuestro código significa concentrarnos en no modificar parámetros de entrada, sino retornar siempre copias nuevas con las modificaciones. En español, no usar setters, sino solamente los getters y hacer siempre new. Cuando queremos modificar algo, tenemos que hacer una copia de nuestro objeto, y retornar esa copia. Para esto, es vital implementar el método copy. Las data class en Kotlin ya traen implementado ese método, no hay que hacerlo manualmente.
¿Cómo declaro una data class en Kotlin?
Agregando el prefijo “data” a la definición de la clase. Vamos a verlo en contexto con un ejemplo:
1 |
data class Persona(val nombre: String, val apellido: String) |
Se debe crear el constructor de la clase, con los atributos que va a tener, indicando el tipo de cada uno. Luego, podríamos tener algo como lo siguiente:
1 2 3 4 5 |
val jose = Persona("jose", "Perez") val pedro = Persona("Pedro", "Gonzalez") jose == jose jose == pedro |
Si quisiéramos, podríamos declarar una función que aplique inmutabilidad:
1 2 3 4 5 6 |
fun doMagic(persona: Persona): Persona { return persona.copy(nombre = "${persona.nombre}lito") } val magia = doMagic(jose) jose == magia |
Notemos que escribiendo el código de esta manera, nos aseguramos que “jose” está exactamente igual antes de entrar al método que luego de salir del mismo
En resumen
Usando las data class en kotlin podemos ejercitar el “==” y aplicar el copy, y de esta manera facilitarnos la creación de código inmutable. Eso es un gran beneficio a la hora de leer nuestro código, y nos asegura que no vamos a pasar por alto mutaciones que pueda sufrir nuestro objeto dentro de métodos.
Si quieren leer más acerca de las data class en kotlin, pueden ver la documentación oficial