Non lo è, in generale. Per i linguaggi compilati, l'espressione sarà probabilmente ridotta allo stesso codice macchina, e nei linguaggi interpretati il test esplicito contribuirà a ridurre la possibilità di inserimento indesiderato del codice.
Considera la seguente funzione JavaScript, per esempio, i voti di conteggio su un'ipotetica misura di voto.
function recordVote(YesOrNo) {
if(YesOrNo == true) {
voteYes();
} elseif (YesOrNo == false) {
voteNo();
}
}
Se chiami recordVote(true)
o recordVote(false)
, il metodo interno viene attivato come previsto. Inoltre, se invochi impropriamente recordVote(42)
, recordVote(null)
o recordVote("false")
, non ottieni alcuna azione, che è desiderata per un'app di voto. (specialmente dal momento che il test standard per la verità, di if(YesOrNo)
, avrebbe causato che quest'ultimo registrasse un voto in modo errato.
Ovviamente, nota che i piccoli benefici che ottieni da quanto sopra sono inferiori alla coerenza del tuo codice . Se la libreria ne è già piena, non rimuoverli, ma non aggiungerli se non lo sono. (A meno che, naturalmente, tu non stia rifacendo il tutto e comunque abbia una regola arbitraria di stile per forzare il tuo codice sorgente ad essere il più piccolo possibile ...)