나는 궁금했는데 :일반적인 관행? 이 속기, 우리는 그것을 호출 할 경우, 프로 PHP 개발자들 사이에서 코딩의 인정 관행이라고 여부를
foo() && bar();
대신
if(foo()) {
bar();
}
이 IMO 한 줄 동안 코드가 깔끔하고, 어디서나 사용되는 것을 보지 못했습니다.
나는 궁금했는데 :일반적인 관행? 이 속기, 우리는 그것을 호출 할 경우, 프로 PHP 개발자들 사이에서 코딩의 인정 관행이라고 여부를
foo() && bar();
대신
if(foo()) {
bar();
}
이 IMO 한 줄 동안 코드가 깔끔하고, 어디서나 사용되는 것을 보지 못했습니다.
이는 많은 언어 개발자들 사이에서 일반적인 관행입니다. 기술적으로 아무 문제가 없지만 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
개인적으로 나는 아무 것도 잘못 본 것이 없습니다. 상당히 널리 퍼져 있기 때문에 대부분의 PHP 프로그래머는 확장 된 버전을 이해하는 것만 큼 이해할 것이므로 완벽하게 수용 할 수 있습니다.
가장 중요한 부분은 당신이 쉽게 코드를 작성한다는 것입니다 읽다. 예를 들어 foo()
과 bar()
과 같은 함수 이름을 사용하는 것은 전혀 쓸모가 없으므로 비교하려는 두 함수 중 어느 것이 더 낫다는 것을 말하기는 어렵습니다. 그것
다음의 경우 예를 들어뿐만 아니라 일부 상당한 결함이 있습니다
if
는 언어 구조,하지만 당신은 함수처럼 사용합니다.또 다른 제안은 다음과 같습니다
if (foo()) {
하지만 당신은 두 가지를 비교하고 싶었 : 코드는 항상이 문맥의에. 그리고 읽을 수있는 코드는 컨텍스트를 사용합니다. 두 제안 모두 유효 할 수 있습니다. 핵심은 이미 코드에서 의미를 읽을 수 있다는 것입니다.
conditionMet() && gotForIt();
if (conditionMet()) goForIt();
직접 결정하십시오. 한 줄에서 다른 줄로 섞어서는 안되기 때문에 전체 코드에서 한 가지 스타일을 유지하십시오.
foo() && bar();
은 부울 식이므로 부울 컨텍스트 (조건 : if
, while
등)에 넣지 않으면 잘못됩니다.
코드는 문제의 "이야기"를 말해야하며,이 바로 가기를 사용하면 이야기를 말하지 않습니다. 못생긴 해킹입니다. 우아하지 않습니다.
"깔끔한"것이라고 생각하면 코드이 아니고 코드가 의미하는 코드 에 아직 도달하지 않았습니다.
만약'foo()와 bar()'가 더 일반적이라면 (적어도 적어도 (imo;)이어야한다)). 하지만 나는 "프로"PHP 개발자가 아닙니다 ... –
Bash와 Perl 스크립트에는 매우 일반적입니다 ... 물론 유비 쿼터스 mysql_connect (...) 또는 die()도 있습니다. 나는 생각한다. –
한 줄에 원한다면'if (foo()) bar();라고 말할 수 있습니다. 아니면'foo()? bar() : null;', 원하는 경우. 그러나 영리한 것 외에도 이것은 통사론적인 설탕 일뿐입니다. 한 줄에 맞는 것이 아니라 * 의미를 전달하는 것을 말하십시오. – Tomalak