Variables - Usando variables para simplificar código

por César SantosSeptiembre 14, 20203 minutos
También disponible en: Inglés

Este es el último artículo de una serie de publicaciones sobre cómo mejorar el uso de variables en general.

Nota: El código de ejemplo en este artículo está en JavaScript, pero los conceptos y sugerencias se pueden aplicar a cualquier lenguaje. El ejemplo no tiene sentido funcionalmente, solo sirve para demostrar los conceptos aquí tratados.

Índice

Estos son los temas que se discuten en cada artículo:

  1. Usando constantes
  2. Evita duplicar valores de variables (magic strings)
  3. Usando variables para simplificar el código

Usando variables para simplificar el código

Después de entender qué un magic string y cómo evitar duplicarlos moviendo dichos valores a constantes, podríamos utilizar una estrategia similar para evitar duplicar línea de código.

Echemos un vistazo al siguiente código:

function getColors(text, showErrorMessage) {
  const textColor = text.length >= 5 && text.length <= 30 ? 'green' : 'red'
  if (showErrorMessage && !(text.length >= 5 && text.length <= 30)) {    console.error('El texto debe tener entre 5 y 30 caracteres')
  }

  return textColor
}

// Invoking the function
getColors('algun texto', true)

Como se puede observar hay algunos valores hard-coded. Apliquemos lo que aprendimos en el post "Evita duplicar valores de variables (magic strings)":

const MIN_CHAR = 5const MAX_CHAR = 30
function getColors(text, showErrorMessage) {
  const textColor = text.length >= MIN_CHAR && text.length <= MAX_CHAR ? 'green' : 'red'
  if (showErrorMessage && !(text.length >= MIN_CHAR && text.length <= MAX_CHAR)) {    console.error(`El texto debe tener entre ${MIN_CHAR} y ${MAX_CHAR} caracteres`)
  }

  return textColor
}

// Invoking the function
getColors('algun texto', true)

Pero aún existe código duplicado. Limpiemos más el código:

const MIN_CHAR = 5
const MAX_CHAR = 30

function getColors(text, showErrorMessage) {
  const isValidText = text.length >= MIN_CHAR && text.length <= MAX_CHAR  const textColor = isValidText ? 'green' : 'red'
  if (showErrorMessage && !isValidText) {    console.error(`El texto debe tener entre ${MIN_CHAR} y ${MAX_CHAR} caracteres`)
  }

  return textColor
}

// Invoking the function
getColors('algun texto', true)

Así obtienes multiples beneficios:

  • Le asignas nombres a tu código. Estoy ayuda a entender qué hace el código sin necesidad de poner comentarios.
  • El código es más limpio. Puedes ver todos los lugares donde esa condición/variable está siendo usado. (También puedes usar IntelliSense y otras características del IDE)

La desventaja de esto: Tienes que pensar en nombres de variables que sean descriptivos y que tengan sentido. ¡Lo cual es bastante difícil!. No muy corto (isVal), no muy largo (isTextMatchingCharactersLength).

Estándares del código (preferencia personal)

  • No pongas todo en variables. Identifica cuál código vale la pena mover a variables (Usualmente el código duplicado).
  • Como se ve en el código anterior, el nombre de variable es isValidText (formato Camel case) no IS_VALID_TEXT (formato Screaming snake case). Esto es porque la variable es mutable. Nunca va a ser el mismo valor exacto todo el tiempo. Su valor depende directamente en el parámetro text.

Asegúrate de que tu código es claro y fácil de entender por los demás. Intenta que sea lo más reutilizable y escalable posible.

¡No serás la única persona que tocará ese código para siempre!