A causa della valutazione del cortocircuito, entrambe le soluzioni sono valide anche dal punto di vista tecnico. Tuttavia, stilisticamente, di solito è preferibile e possibile organizzare variabili come metadata
mai essere null
in primo luogo.
In questo caso particolare, stai usando due variabili per denotare il tipo. metadata.TypeEnum
memorizza il tipo e metadata
essendo null
indica un tipo "nessun metadata". Il tuo linguaggio di programmazione ti consente di creare tutti i tipi che desideri. Approfittane.
Una soluzione migliore è creare una classe base Cell
che non abbia nemmeno un membro metadata
, quindi non c'è bisogno che sia sempre null
. Quindi crea una classe derivata StatusCell
che aggiunge le proprietà univoche necessarie e la stessa per gli altri tipi di celle.
Se questo tipo di refactoring non è possibile, come se si stesse lavorando con un'API di terze parti, un'altra opzione da considerare è una clausola di guardia, come:
if (metadata == null)
return;
if (metadata.TypeEnum != VariantInfoMetadata.CellTypeEnum.Status)
...
Molte persone (me compreso) preferiscono questo stile perché limita sia il livello di nidificazione che il numero di condizioni in un'istruzione if
.