Code review en Kotlin: qué revisar y cómo dar retroalimentación

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Code review en Kotlin: qué revisar y cómo dar retroalimentación



El code review es una de las herramientas más efectivas para mantener la calidad del código, compartir conocimientos en el equipo y prevenir errores. Sin embargo, simplemente "echar un vistazo" al pull request no es suficiente. En el lenguaje Kotlin, con su rico sistema de tipos, corrutinas y capacidades funcionales, es importante prestar atención a aspectos específicos. En este artículo, analizaremos qué observar exactamente al revisar código en Kotlin y cómo formular observaciones para que sean útiles y no ofensivas.



1. Principios básicos de la retroalimentación constructiva



Antes de pasar a los detalles técnicos, recordemos algunas reglas que hacen que el code review sea útil para todos los participantes.



Enfocarse en el código, no en el autor

En lugar de "Escribiste mal código", diga "Este método se puede simplificar usando let". La especificidad y un tono neutral reducen la tensión.



Dividir en categorías

Marque las observaciones como:

  • Blocking — debe corregirse obligatoriamente (error lógico, fuga de recursos).
  • Nitpick — pequeñas objeciones (estilo, formato).
  • Question — aclaración (la intención no está clara).


Explicar el "por qué"

No es suficiente decir "usa filterNotNull()". Añada: "Esto eliminará un bucle innecesario y hará que el código sea autodocumentado". Así el autor aprende, no solo corrige.



2. Null safety y tipos: los principales aliados de Kotlin



Kotlin está diseñado para evitar NullPointerException en tiempo de compilación. Verifique que esta protección no se haya visto comprometida.



Evitar los !! (not-null assertion) innecesarios

El operador !! es un grito de auxilio. Su uso debe ser la excepción, no la regla.



// Mal: riesgo de NPEfun process(user: User?) {    val name = user!!.name}

// Bien: llamada segurafun process(user: User?) { val name = user?.name ?: "Invitado"}


Qué revisar: si ve !!, pregunte al autor si se puede reemplazar por ?.let, ?: (elvis) o requireNotNull().



Uso correcto de tipos nullable

No todos los parámetros deben ser nullable. Si una función siempre espera un valor, declare el tipo sin el signo de interrogación.



// Discutible: null no significa nadafun log(message: String?) {    println(message ?: "null")}

// Mejor: requisito explícitofun log(message: String) { println(message)}


3. Corrutinas y flujos: asincronía sin dolor



Kotlin Coroutines es una herramienta poderosa, pero es fácil usarla incorrectamente. Al revisar, preste atención a los siguientes puntos.



El dispatcher correcto para las tareas

No ejecute operaciones largas (red, disco) en Dispatchers.Main.



// Mal: bloquea la UIGlobalScope.launch(Dispatchers.Main) {    val data = fetchFromNetwork() // se cuelga}

// Bien: cambio de contextoviewModelScope.launch { val data = withContext(Dispatchers.IO) { fetchFromNetwork() } updateUI(data)}


Fuga de corrutinas y structured concurrency

Use viewModelScope, lifecycleScope o coroutineScope en lugar de GlobalScope. Este último vive mientras vive la aplicación y fácilmente provoca fugas.



// Peligroso: fugaGlobalScope.launch { /* ... */ }

// Seguro: vinculado al ciclo de vidalifecycleScope.launch { /* ... */ }


4. Colecciones y estilo funcional: brevedad y legibilidad



Kotlin ofrece una rica biblioteca para trabajar con colecciones. Úsela en lugar de bucles explícitos.



Cadenas en lugar de mutaciones

Evite agregar manualmente a una lista si se puede recopilar el resultado

Blogs

Book Recommendations