2013-07-10 16 views
7

Tôi thường thấy nếu cấu trúc được mã hóa như thế này:Tại sao liên tục đầu tiên trong một điều kiện nếu

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

Tại sao họ đặt giá trị hằng số đầu tiên và không phải là biến? như trong ví dụ này:

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

[Điều kiện Yoda] (http://en.wikipedia.org/wiki/Yoda_Conditions) –

+0

Tại sao được gắn thẻ vào 'C' tôi bị nhầm lẫn: ( –

+2

@GrijeshChauhan cùng một quy tắc hoạt động trên C cũng.Đặt hằng số ở bên trái của –

Trả lời

14

Điều này được gọi là điều kiện yoda hoặc cú pháp.

Nó được sử dụng để giúp ngăn việc gán ngẫu nhiên.

Nếu bạn quên một bằng ký sẽ thất bại

if(false = $a) thất bại trong việc biên dịch

if($a = true) gán giá trị của true vào biến $a và đánh giá như true

Các Wordpress Coding Standards đề cập này cụ thể là:

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

Khi thực hiện so sánh logic, luôn đặt biến ở bên phải bên cạnh, hằng số hoặc chữ ở bên trái. Trong ví dụ trên, nếu bạn bỏ qua một dấu bằng (thừa nhận nó, nó sẽ xảy ra ngay cả với phần lớn chúng ta), bạn sẽ nhận được một lỗi phân tích cú pháp, vì bạn không thể gán cho một hằng số như thật. Nếu tuyên bố là cách khác xung quanh ($ the_force = true), nhiệm vụ sẽ là hoàn toàn hợp lệ, trả về 1, khiến câu lệnh if đánh giá thành đúng và bạn có thể theo dõi lỗi đó một lúc.

Một chút kỳ lạ, đó là, để đọc. Làm quen với nó, bạn sẽ.

+0

Cảm ơn bạn đã nhanh chóng phản ứng! Bây giờ tôi cuối cùng đã biết tại sao điều này được thực hiện như thế này :) –

+3

Mặc dù nó là tốt để ngăn chặn lỗi chính tả bạn sẽ có một thiếu dễ đọc. –

+0

"Vâng, tốt, đó chỉ là, như, ý kiến ​​của bạn, người đàn ông." - Dudeness của anh ấy cũng được gọi là El Duderino – user20232359723568423357842364

-2

Đây là một ví dụ về YODA Style của mã hóa

if (var a == true){ 
} 

là ít an toàn hơn

if (true == var a){ 
} 

bởi vì khi bạn quên rằng thứ hai = nhãn hiệu, bạn sẽ nhận được một lỗi phân hợp lệ, và có thể xem nó tại thời gian biên dịch.

+4

Ý của bạn là thứ hai là an toàn hơn. –

+2

@Sankalp Mishra Vui lòng đọc lại câu trả lời của bạn. Tôi chắc chắn bạn sẽ biết được nơi để chỉnh sửa. –

Các vấn đề liên quan