2011-08-06 2 views
2

나는 궁금했는데 :일반적인 관행? 이 속기, 우리는 그것을 호출 할 경우, 프로 PHP 개발자들 사이에서 코딩의 인정 관행이라고 여부를

foo() && bar(); 

대신

if(foo()) { 
    bar(); 
} 

이 IMO 한 줄 동안 코드가 깔끔하고, 어디서나 사용되는 것을 보지 못했습니다.

+2

만약'foo()와 bar()'가 더 일반적이라면 (적어도 적어도 (imo;)이어야한다)). 하지만 나는 "프로"PHP 개발자가 아닙니다 ... –

+1

Bash와 Perl 스크립트에는 매우 일반적입니다 ... 물론 유비 쿼터스 mysql_connect (...) 또는 die()도 있습니다. 나는 생각한다. –

+1

한 줄에 원한다면'if (foo()) bar();라고 말할 수 있습니다. 아니면'foo()? bar() : null;', 원하는 경우. 그러나 영리한 것 외에도 이것은 통사론적인 설탕 일뿐입니다. 한 줄에 맞는 것이 아니라 * 의미를 전달하는 것을 말하십시오. – Tomalak

답변

3

이는 많은 언어 개발자들 사이에서 일반적인 관행입니다. 기술적으로 아무 문제가 없지만 StackOverflow에 나타나는 횟수로 판단 해 볼 때 "그것이 합리적인 유일한 것일 때만 사용"이라고 말할 것입니다. 대부분의 사람들은 그것을 기대하지 않습니다. 말했다

이 완벽하게 유효합니다

foo() && bar() && baz(); 

입니다

foo()?bar()?bat():zonk():baz(); 

처럼 기억

function foo(){return true;} 
function bar(){echo "bar";} 
function baz(){echo "baz"; return 2;} 
echo foo()||foo()?baz():baz(); // baz2 
1

개인적으로 나는 아무 것도 잘못 본 것이 없습니다. 상당히 널리 퍼져 있기 때문에 대부분의 PHP 프로그래머는 확장 된 버전을 이해하는 것만 큼 이해할 것이므로 완벽하게 수용 할 수 있습니다.

1

가장 중요한 부분은 당신이 쉽게 코드를 작성한다는 것입니다 읽다. 예를 들어 foo()bar()과 같은 함수 이름을 사용하는 것은 전혀 쓸모가 없으므로 비교하려는 두 함수 중 어느 것이 더 낫다는 것을 말하기는 어렵습니다. 그것

다음의 경우 예를 들어뿐만 아니라 일부 상당한 결함이 있습니다

  • if는 언어 구조,하지만 당신은 함수처럼 사용합니다.
  • if 조건에 세로 공간을 추가합니다. 이것은 공간이 시각적 인 초점에 영향을 미치기 때문에 읽는 것을 어렵게 만들 수 있습니다.

또 다른 제안은 다음과 같습니다

if (foo()) { 

하지만 당신은 두 가지를 비교하고 싶었 : 코드는 항상이 문맥의에. 그리고 읽을 수있는 코드는 컨텍스트를 사용합니다. 두 제안 모두 유효 할 수 있습니다. 핵심은 이미 코드에서 의미를 읽을 수 있다는 것입니다.

conditionMet() && gotForIt(); 

    if (conditionMet()) goForIt(); 

직접 결정하십시오. 한 줄에서 다른 줄로 섞어서는 안되기 때문에 전체 코드에서 한 가지 스타일을 유지하십시오.

1

foo() && bar();은 부울 식이므로 부울 컨텍스트 (조건 : if, while 등)에 넣지 않으면 잘못됩니다.

코드는 문제의 "이야기"를 말해야하며,이 바로 가기를 사용하면 이야기를 말하지 않습니다. 못생긴 해킹입니다. 우아하지 않습니다.

"깔끔한"것이라고 생각하면 코드이 아니고 코드가 의미하는 코드 에 아직 도달하지 않았습니다.

관련 문제