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 ...)