Mejor código,

sin esfuerzos, sin siquiera IA

Maëlle Salmon (rOpenSci), Hugo Gruson (EMBL), Etienne Bacher

https://latinr25-mejorar-codigo.netlify.app/

Código 💩

lleno <-!any(is.na(x))
ok<- !(x[1] == y[1])
if (ok) z<- x +  1

Formatear con Air 💻$

air format test.R

Formatear con Air 💻$

lleno <- !any(is.na(x))
ok <- !(x[1] == y[1])
if (ok) {
  z <- x + 1
}

Mejorar con {flir} 📦

flir::fix("test.R")

Mejorar con {flir} 📦

lleno <- !anyNA(x)
ok <- !(x[1] == y[1])
if (ok) {
  z <- x + 1
}

Mejorar con la CLI nueva jarl! 💻$

jarl check test2.R --fix

Mejorar con la CLI nueva jarl! 💻$

lleno <- !anyNA(x)
ok <- !(x[1] == y[1])
if (ok) {
  z <- x + 1
}

Saber qué más con {lintr} 📦

lintr::lint("test.R", linters = lintr::all_linters())
/home/maelle/Documents/conferences/latinr25-mejorar-codigo/test.R:2:7: warning: [comparison_negation_linter] Use x != y, not !(x == y).
ok <- !(x[1] == y[1])
      ^~~~~~~~~~~~~~~
/home/maelle/Documents/conferences/latinr25-mejorar-codigo/test.R:2:12: style: [implicit_integer_linter] Use 1L or 1.0 to avoid implicit integers.
ok <- !(x[1] == y[1])
          ~^
/home/maelle/Documents/conferences/latinr25-mejorar-codigo/test.R:2:20: style: [implicit_integer_linter] Use 1L or 1.0 to avoid implicit integers.
ok <- !(x[1] == y[1])
                  ~^
/home/maelle/Documents/conferences/latinr25-mejorar-codigo/test.R:4:13: style: [implicit_integer_linter] Use 1L or 1.0 to avoid implicit integers.
  z <- x + 1
           ~^

Modificar a mano 💪

lleno <- !anyNA(x)
ok <- (x[1L] != y[1L])
if (ok) {
  z <- x + 1
}

Herramientas 🧰

  • 💻$ Air: CLI para formatear
  • 📦 {flir}: Paquete R para coregir patrones de codígo
  • 💻$ jarl: CLI nueva para coregir patrones de codígo
  • 📦 {lintr}: Paquete R para alertar sobre más patrones de codigo

¿Cómo usarlas?

  • En tu ordenador (terminal, IDE…), de vez en cuando

  • De forma automatica: para PR por ejemplo.

¿Y IA?

  • No es local (pero lo puede ser);

  • Cuesta;

  • No es deterministica;

  • Problemas éticos e ideologicos.

Conclusión

Mejoras tu codígo sin esfuerzo, sin siquiera IA, con

  • Air

  • {flir} o jarl

  • {lintr}

Y con revisión por seres humanos!

https://latinr25-mejorar-codigo.netlify.app/

Gracias a Yanina Bellini Saibene y Lionel Henry.