Capítulo 2 Guía de Estilo
- Esta guía la realice con el fin de que puedas programar tu código de la forma más ordenada posible, logrando que sea comprensible por los demás.
- Puedes inventar tus propias reglas, para acostumbrarte a programar bajo diferentes normas.
- Basada en la guía de estilo de
tidyverse
yPEP 8
.
2.1 Directorio
- Siempre usaremos un directorio que nos aporte una ruta relativa.
- Lo haremos a través de la creación de proyectos.
2.2 Archivos del directorio
- Los archivos del directorio serán nombrados usando guiones medios o guiones bajos en vez de espacios y letras minúsculas.
- Tampoco usaremos caracteres especiales como los tildes.
- Usaremos fecha de creación (en formato ISO 8601) y nombres explicativos.
- Ejemplo:
# Guardamos un archivo 'csv' en el directorio
# Mal
data(iris)
write.csv(iris, 'base.csv')
# Bien
data(iris)
write.csv(iris, '2021-03-26_iris-sin-procesar.csv')
2.3 Asignación de variables
- Usaremos el formato
snake_case
para nombrar variables, o sea, escritas en minúsculas, sin caracteres especiales (como el punto) y creando espacios mediante guiones bajos. - Para asignar variables usaremos el operador
<-
en vez de=
. Solo usaremos=
para definir argumentos dentro de funciones. - Preferiremos nombres de variables informativos.
- Ejemplo:
# Mal
= 'Hola mundo'
String.Hola
# Bien
<- 'Hola mundo' string_hola
2.4 Operadores
- Siempre usaremos espacios a los lados de los operadores.
- Ejemplo:
# Mal
<-3*5+2<=24^2
suma
# Bien
<- 3 * 5 + 2 <= 24 ^ 2 suma
2.5 Paréntesis
- Para las funciones
for
,while
,function
,if
yelse if
antepondremos un espacio antes de usar paréntesis. - Después de cerrar paréntesis en estas funciones, haremos un espacio y pondremos solo la llave de apertura en la misma línea, y abajo pondremos la llave de cierre.
- Ejemplo:
# Mal
for(i in 1:5){runif(i)
print(i)}
# Bien
for (i in 1:5) {
runif(i)
print(i)
}
2.6 Comas
- Después de escribir una coma, adicionamos un espacio.
- Ejemplo:
# Mal
<- c(NA,6.5,7,5.2)
notas_finales <- mean(notas_finales,na.rm = TRUE)
promedio_de_notas
# Bien
<- c(NA, 6.5, 7, 5.2)
notas_finales <- mean(notas_finales, na.rm = TRUE) promedio_de_notas
2.7 Punto y coma
- No usaremos una linea para realizar más de una ejecución usando
;
. - Ejemplo
# Mal
<- runif(10); mean(valores_aleatorios)
valores_aleatorios
# Bien
<- runif(10)
valores_aleatorios mean(valores_aleatorios)
2.8 Packages
- Declararemos explícitamente los nombres de los packages de procedencia al momento de usar una función, a excepción de los packages que se cargan automáticamente al iniciar
R
y packages que permiten utilizar pipes (por ejemplo:%>%
). - Ejemplo:
data(iris)
# Mal
require(magrittr)
require(dplyr)
<- iris %>%
filtro_sepal_length filter(Sepal.Length >= 7.4) %>%
arrange(Sepal.Length)
# Bien
require(magrittr)
<- iris %>%
filtro_sepal_length ::filter(Sepal.Length >= 7.4) %>%
dplyr::arrange(Sepal.Length) dplyr
2.9 Cantidad de código por fila
- Esta no debe exceder los 80 caracteres (es posible añadir una línea vertical a RStudio para tener una referencia de los 80 caracteres).
- Algunas buenas prácticas es separar en líneas los argumentos de una función, o separar en líneas la utilización de pipes.
- Ejemplo:
# Mal
require(magrittr)
data(iris)
%>% dplyr::filter(Sepal.Length >= 7) %$% plot(x = Sepal.Length, y = Sepal.Width, main = ' Gráfico de Sepal')
iris
# Bien
%>%
iris ::filter(Sepal.Length >= 7) %$%
dplyrplot(x = Sepal.Length,
y = Sepal.Width,
main = ' Gráfico de Sepal')