2011-10-02 1 views
1

A)변수의 차이 === 값과 값 === 변수?

if(null === $object) 
    { 
    //take some action 
    } 

B)

if($object === null) 
    { 
    //take some action 
    } 

나는 나 같은 일을 습관입니다)하지만 젠드 프레임 워크에 나는 그들이처럼 수행 한 모든 곳에서 찾을 수 있습니다). 거기에 어떤 이점이 있습니까 ??

감사합니다.

답변

5

아니요, 차이는 없습니다.

$a == null (또는 $a === null) 대신 $a = null을 쓰면 후자가 바보 같은 오타를 피하는 데 도움이됩니다. 첫 번째 경우에는 비교 대신 할당으로 인해 논리적 오류가 발생합니다. 두 번째 경우에는 오류가 발생하여 문제를 빨리 발견하는 데 도움이됩니다.

+0

gr8 설명 thx. –

+0

자바 스크립트에서는 타입 강제 변환과 관련된 문제가 발생합니다. PHP가 그렇게하지 않습니까? – mowwwalker

+0

@Walkerneo : 아니, PHP에서 모두 내가 설명한대로 작동합니다 – zerkms

-1

두 번째 방법은 null에 대한 변수 값과 유형을 확인합니다. 오류는 견인 방법에 따라 달라야합니다.

+0

둘 다'==='연산자를 사용하기 때문에 둘 다 값과 유형을 확인합니다. 유일한 차이점은 첫 번째 것은 오히려 오히려 오히려 할당 대신에 결과가 나오는 것을 피하는 것입니다. – Rob

1

차이점이 없습니다. 변수를 null으로 설정하고 비교하지 않고 실수를 피하는 데 사용되지만 null === $object은 오타가 발생하지 않는 나쁜 방법으로 간주됩니다 (c).

1

$object === null 표현은 왼쪽에서 오른쪽 방향으로 두 번째 자연 판독 순서를 깨뜨리는 원인이되기 때문에 훨씬 더 인간 친화적입니다. null === $object. 그렇기 때문에 통역사에 별다른 차이가 없지만 사람이 읽을 때 조금 어려워지는 것입니다. 일부 논리를 포함 - if..else 문을 사용하면 어떻게 들릴지? "null$object이라면 .. nullnull입니다. 어떻게 다른 값과 같을 수 있습니까? 오, 이런, 실제로 우완 가치와 왼손 값을 비교하면, 역전 된 것입니다. 따라서 $object이 같으면 null 그러면 우리는 .. ". 그리고 당신의 생각은 항상 일 때 입니다.

내 결론은 다음과 같습니다. 사용 가능할 때마다 $value == const을 사용하십시오! 오래전에 사람들은 if ($value = const)이라고 썼지 만,이 시대는 지나갔습니다. 이제 모든 IDE에서 간단한 오류에 대해 알 수 있습니다.

+0

성격 읽기 순서는 두 가지 방식으로 모두 작동합니다. 또한 좋은 연습은 오타 (사람이하는)를 막기 위해 왼쪽에서 오른쪽 리더의 왼쪽에'NULL '을 쓰는 것입니다. 그래서 신경 쓰는게 더 자연스럽지, 그렇지? 리터럴 -1 – hakre

+0

나에게있어'$ R 사과라면'RED'가 아닌'R $ if apple'을 읽기가 훨씬 쉽습니다. 필자는 오타를 할 수는 있지만이 코드의 복잡성을 없애고 이해하기 쉽게 만드는 것이 주 목적이라고 생각합니다. 내 코드를 좀 더 읽기 쉽도록 만들고'== '대신'== '을 타이핑하는 위험을 감수하는 편이 낫다. 아주 드물게 발생하기 때문에 깨끗한 코드 규칙 중 하나를 따르는 경우 찾기가 아주 쉽다. –

+1

잘 읽는 것이 더 좋습니다 :'if ($ apple-> isRed())'. 동사와 명사를 섞지 말고 명사 객체와 동사 방법을 만드십시오. 나의 주장은'if (a === b)'또는'if (b === a)'가 더 읽기 쉽다. 비교 (양면)이므로 자연 독서 *는 중요하지 않아야합니다. – hakre

0

B)는보다 읽을 수)

방법이 더되고) 경향이 있기 때문에 가능한 혼란 ===와의 적은 오류로 일부 overcautious 사람들에 의해 간주됩니다.
하지만 3 인 경우 누구나 혼란스러워 할 것입니다.

+0

아니요, 그렇지 않습니다. 그것은 자연 언어, 우리가 말하는 방식과 닮았습니다. 당신은이 성명을 소리내어 읽을 수 있으며 주변의 모든 사람들은 그것이 의미를 갖게 될 것입니다 –

0

개발자가 값의 배정을 중지하려고 시도하는 선택 항목입니다.

기능은 두 비교 방법에서 동일하지만 "a"의 경우 무언가를 할당 할 수 없기 때문에 모든 값의 할당을 중지합니다.