2013-07-10 11 views
7

vedo spesso se le strutture di essere codificati in questo modo:Perché costante prima in una condizione if

if (true == a) 
if (false == a) 

Perché hanno messo prima e non la variabile il valore costante? come in questo esempio:

if (a == true) 
if (b == true) 
+6

[Yoda Conditions] (http://en.wikipedia.org/wiki/Yoda_Conditions) –

+0

Perché taged a 'C' Ho confuso :( –

+2

@GrijeshChauhan la stessa legge funziona anche su C.Posto costante a sinistra di operatore di confronto è buono ed evita incarichi accidentali –

risposta

14

Questo è chiamato yoda syntax o condizioni yoda.

Viene utilizzato per evitare incarichi accidentali.

Se si dimentica un segno di uguale fallirà

if(false = $a) fallisce la compilazione

if($a = true) assegna il valore della true alla variabile $a e valuta come true

Il Wordpress Coding Standards menzione questo particolare:

if (true == $the_force) { 
    $victorious = you_will($be); 
} 

Durante i confronti logici, posizionare sempre la variabile sul lato destro , costanti o letterali a sinistra.

Nel precedente esempio, se si omette un segno di uguale (ammetterlo, succede anche al più esperto di noi), si otterrà un errore di analisi, perché non è possibile assegnare ad una costante come vero. Se la dichiarazione fosse la alternativa ($ the_force = true), l'assegnazione sarebbe perfettamente valida, restituendo 1, facendo sì che l'istruzione if venisse valutata a true e si potrebbe essere a caccia di quell'errore per un po '.

Un po 'bizzarro, è, da leggere. Abituati, lo farai.

+0

Grazie per il veloce risposta! ora so finalmente perché questo è fatto in questo modo :) –

+3

Anche se è bene prevenire errori di battitura, si avrà una mancanza di leggibilità. –

+0

"Sì, beh, è ​​solo una tua opinione, amico." - Il suo Dudeness aka El Duderino – user20232359723568423357842364

-2

Questo è un esempio di YODA Style di codifica

if (var a == true){ 
} 

è meno sicuro rispetto

if (true == var a){ 
} 

perché quando si dimentica che secondo = marchio, si otterrà un errore di assegnazione non valida, e può prenderlo a tempo di compilazione.

+4

Vuoi dire che il secondo è più sicuro giusto. –

+2

@Sankalp Mishra Leggi di nuovo la tua risposta. Sono sicuro che saprai dove modificare. –

Problemi correlati