Ci sono delle volte in cui una variabile extra può essere di aiuto per la leggibilità generale, specialmente quando si valuta una lunga espressione all'interno di una if
o una chiamata di funzione che fa sì che il codice vada via dal lato destro dello schermo.
In Java 5 o versioni successive (e in molte lingue simili), una variabile extra può essere utile per trovare la causa delle eccezioni del puntatore nullo. Considera il seguente codice Java che si basa su "autoboxing" di Java per convertire Integer
oggetti in una primitiva int
:
public int add(Integer firstIntObj, Integer secondIntObj) {
return firstIntObj + secondIntObj;
}
Getterà una NullPointerException quando converte un oggetto non inizializzato ( null
) Integer
in un int
primitivo, ma questa eccezione non indica quale oggetto ha causato l'eccezione perché i due possibili colpevoli sono sullo stesso linea. Quanto segue esploderebbe su una riga diversa per ogni input null
, quindi il numero di riga nell'eccezione indicherà quale era null
:
public int add(Integer firstIntObj, Integer secondIntObj) {
int first = firstIntObj;
int second = secondIntObj;
return first + second;
}
Un modo migliore per gestire questo è lanciare la tua eccezione descrittiva in modo che qualcuno che chiama questo metodo possa diagnosticare il proprio problema senza bisogno del tuo codice sorgente:
public int add(Integer firstIntObj, Integer secondIntObj) {
if (firstIntObj == null) {
throw new IllegalArgumentException("First argument was null!");
}
if (secondIntObj == null) {
throw new IllegalArgumentException("Second argument was null!");
}
return firstIntObj + secondIntObj;
}
Questa tecnica può essere utilizzata per suddividere qualsiasi linea che possa generare più di un'eccezione. L'utilizzo di variabili distinte è meno digitante rispetto a un'eccezione descrittiva: è veloce e sporca.