Hay lugares donde verifico si hay punteros válidos antes de realizar una operación con ellos; estos controles se pueden anidar bastante profundamente a veces.Anidado Si (x) comprueba - ¿Mejor forma de escribir esto?
Por ejemplo, he
if (a)
{
if (a->b())
{
if (a->b()->c())
{
a->b()->c()->DoSomething();
}
}
}
Realmente no me gusta el aspecto de este. ¿Hay alguna manera de convertir esto en algo más legible? Idealmente,
if (a && a->b() && a->b()->c())
{
...
}
sería genial, pero obviamente no funcionaría.
EDITAR - nvm el ejemplo que puse SÍ funciona como todo el mundo ha señalado. Lo probé para ver si funciona, pero hubo un error en mi código en mi prueba. duh!
¿Por qué no funciona? –
Obviamente * funcionaría * en el ejemplo que ha publicado. ¿Está sucediendo algo en los casos de 'else' que dejaste fuera? –
¿Qué te hace pensar que eso no funcionaría? La evaluación de cortocircuito prácticamente garantiza que los dos significan lo mismo (a menos que haya sobrecargado 'operator &&'). –