He respondido a los hilos aquí (o al menos commented) con respuestas que contienen un código como este, pero me pregunto si es buena o mala forma escribir una serie de ramas if
con una (o más) ramas haciendo nada en ellos, generalmente para eliminar la comprobación de null
en cada rama.¿Es una rama If que no hace nada un olor a código o una buena práctica?
Un ejemplo (código C#):
if (str == null) { /* Do nothing */ }
else if (str == "SomeSpecialValue")
{
// ...
}
else if (str.Length > 1)
{
// ...
}
en lugar de:
if (str != null && str == "SomeSpecialValue")
{
// ...
}
else if (str != null && str.Length > 1)
{
// ...
}
Y, por supuesto, esto es sólo un ejemplo, ya que tienden a utilizar estos con grandes y más complejos clases Y en la mayoría de estos casos, un valor null
indicaría no hacer nada.
Para mí, esto reduce la complejidad de mi código y tiene sentido cuando lo veo. Entonces, ¿esta forma es buena o mala (un código huele, incluso)?
Creo que está bien si hace que su código sea más legible y evita las condiciones intrincadas. Votar para cerrar, sin embargo, "es esto bueno o malo" es demasiado subjetivo. – casablanca
El hecho de que todos estos controles sean necesarios "por si acaso" el valor es nulo es un olor en sí mismo, en mi humilde opinión. Al hacer esto, estás ocultando errores. – SimonJ
@SimonJ: Buen punto. Al menos en este caso, debería lanzar una excepción si no se esperaba un valor 'nulo'. – casablanca