Ese es el gran dilema. Cuando escribimos un programa deberíamos tratar de ser claros para beneficio otros programadores o compactos para beneficio del programa. Muchas veces me encontré con algo así:

If a = True Then 
   b = True 
Else 
   b = False
End If

En este caso se me ocurren muchas optimizaciones que podemos llevar a cabo. Por empezar por el hecho de que comparar una variable a True o False no tiene sentido. Por qué decir If x = True cuando podemos decir If x.
Pero en definitiva este bloque se puede resumir en algo así

b = a

El gran problema es que un código tan simple como ese, la mayoría de las veces viene tan disfrazado que nos cuesta reconocerlo. Miren esto:

IF Objeto.Propiedad = False Then
  Lista.Items.Add(new Item("Alguna Descripcion", True))
Else
  Lista.Items.Add(new Item("Alguna Descripcion", False))
End If

Cuántos de Ustedes se darían cuenta de que esto es un:

Lista.Items.Add(new Item("Alguna Descripcion", Not Objeto.Propiedad))

Esta es otra forma clásica del mismo problema:

If a = b Then
  return True
Else
  Return False
End If

Cuando esto podría escribirse tan fácil como:

Return (a = b)

Para terminar me gustaría hacer referencia al operador ternario. Esta instrucción que existe en casi todos los lenguajes de programación nos hace la vida más compacta a los programadores (aunque también tiene sus detractores). Último Ejemplo:

If a = b
  Return "Hola"
Else
  Return "Chau"
End If

Si bien puede parecer que no hay forma de comprimir este algoritmo, la hay. Con el operador ternario lo podríamos expresar así:

Return IIF(a = b, "Hola", "Chau")

Esta función toma tres parámetros. Evalúa el primero. Si el resultado es verdadero devuelve el segundo parámetro, en caso contrario devuelve el tercero.

Todos estos cambios no tienen como único objetivo hacer más corto el código. También sirven para acelerarlo. Recuerden que ahorrarse un par de ciclos de procesador no es la gran cosa, pero… ¿Qué pasa si un algoritmo así se usase para calcular el color de un pixel en alguna aplicación gráfica? Esto implica que este algoritmo se ejecutaría al menos 1.000.000 de veces por cada imagen llevada a la pantalla. Imagínense eso unas 20 veces por segundo. Cambios tan simples como estos pueden ser la diferencia entre el éxito o fracaso de una aplicación. Pero bueno. Si la claridad del código es tan importante…

Anuncios