2013-07-10 15 views
7

często widzę jeśli struktury są kodowane tak:Dlaczego Stała pierwszy w if warunek

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

Dlaczego oni umieścić pierwszy i nie zmienną stałą wartość? jak w tym przykładzie:

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

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

+0

Dlaczego TAG, do 'C' mam mylić :( –

+2

@GrijeshChauhan samego prawa działa na C also.Putting stała na lewo od operator porównania jest dobry i unika przypadkowych przypisań –

Odpowiedz

14

Nazywa się to składnią yody lub warunkami yody.

Służy do zapobiegania przypadkowym przypisaniom.

Pominięcie znak równości nie powiedzie

if(false = $a) nie skompilować

if($a = true) przypisuje wartość true do zmiennej $a i ocenia jako true

The Wordpress Coding Standards wspomnieć o tym w szczególności:

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

Podczas wykonywania porównań logicznych zawsze umieszczaj zmienną po prawej stronie, stałe lub literały po lewej stronie.

W powyższym przykładzie, jeśli pominąć znak równości (przyznaję, zdarza nawet najbardziej zaprawiony z nas), dostaniesz błąd składniowy, ponieważ nie można przypisać do stałej jak prawdziwe. Jeśli instrukcja byłaby inna niż ($ the_force = true), przydział byłby całkowicie poprawny, zwracając 1, powodując, że instrukcja if oceni na prawdziwa, i mógłbyś przez chwilę ścigać tego błędu.

Trochę dziwaczny, to znaczy czytać. Przyzwyczajaj się do tego, będziesz.

+0

Dziękuję za szybki odpowiedź! teraz w końcu wiem, dlaczego tak się dzieje :) –

+3

Choć dobrze jest zapobiegać literówki, będzie brak czytelności. –

+0

"Tak, cóż, to tylko, jak, twoje zdanie, człowieku." - Jego Dudeness aka El Duderino – user20232359723568423357842364

-2

Jest przykładem YODA Style kodowania

if (var a == true){ 
} 

jest mniej bezpieczniejsze niż

if (true == var a){ 
} 

ponieważ gdy użytkownik zapomni, że drugi = znak, otrzymasz nieprawidłowy błąd przypisania, i można go złapać w czasie kompilacji.

+4

Masz na myśli, że drugi jest bezpieczniejszy. –

+2

@Sankalp Mishra Przeczytaj ponownie odpowiedź. Jestem pewny, że dowiesz się, gdzie edytować. –

Powiązane problemy