Ci sono luoghi in cui controllo i puntatori validi prima di eseguire un'operazione con essi; questi controlli possono essere annidati abbastanza profondamente a volte.Nested If (x) checks - Modo migliore per scrivere questo?
Ad esempio, ho
if (a)
{
if (a->b())
{
if (a->b()->c())
{
a->b()->c()->DoSomething();
}
}
}
Io davvero non mi piace l'aspetto di questo. C'è un modo per trasformare questo in qualcosa di più leggibile? Idealmente,
if (a && a->b() && a->b()->c())
{
...
}
sarebbe fantastico, ma ovviamente non funzionerebbe.
EDIT - nvm l'esempio che ho messo funziona come tutti hanno sottolineato. L'ho provato per vedere se funziona, ma c'era un bug nel mio codice nel mio test. duh!
Perché non funziona? –
Ovviamente * dovrebbe * funzionare nell'esempio che hai pubblicato. Sta succedendo qualcosa nei casi 'else' che hai omesso? –
Cosa ti fa pensare che non funzionerebbe? La valutazione del cortocircuito praticamente garantisce che i due significhi la stessa cosa (a meno che tu non abbia sovraccaricato l'operatore &&). –