2

私は、この省略表現が、プロの PHP 開発者の間で受け入れられているコーディング方法であるかどうか疑問に思っていました。

foo() && bar();

それ以外の

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

IMO では、1 行のコードの方がはるかにきれいですが、どこでも使用されているのを見たことがありません。

4

4 に答える 4

3

これは、多くの言語の開発者の間で一般的な方法です。技術的には何も問題はありませんが、StackOverflow に表示される回数から判断すると、「意味のある場合にのみ使用する」と言っておきましょう。ほとんどの人はそれを期待していません。

つまり、これは完全に有効です。

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

そのまま

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

覚えとけ:

function foo(){return true;} 
function bar(){echo "bar";} 
function baz(){echo "baz";  return 2;} 
echo foo()||foo()?baz():baz(); // baz2
于 2011-08-06T12:33:41.153 に答える
1

foo() && bar();ifはブール式なので、ブール コンテキスト ( 、 などの条件) 内に配置しないと正しくありませんwhile

コードは、解決される問題の「ストーリー」を伝える必要があります。このショートカットを使用しても、ストーリーは伝えられません。それは醜いハックであり、エレガントではありません。

それを「きちんとした」と考えるなら、コードがコードではなくアイデアを意味するという点にまだ到達していません。

于 2011-08-06T12:49:01.670 に答える
1

個人的には、私はそれで何も悪いとは思いません。これはかなり広く普及しているため、ほとんどの PHP プログラマーは拡張バージョンと同じように理解し、完全に受け入れられるようになります。

于 2011-08-06T12:24:27.823 に答える
1

最も重要な部分は、読みやすいコードを書くことです。foo()たとえばとのような関数名を使用しbar()てもまったく役に立たないため、比較したい 2 つのうちどちらが優れているかはわかりません。

それに加えて、if の例にはいくつかの重大な欠陥もあります。

  • ifは言語構造ですが、関数のように使用します。
  • if 条件に垂直スペースを追加します。これにより、スペースが視覚的な焦点に影響を与えるため、読みにくくなる可能性があります。

別の提案は次のとおりです。

if (foo()) {

しかし、この 2 つを比較したかったのです。コードは常にそのコンテキストにあります。読み取り可能なコードは、そのコンテキストを使用します。両方の提案が有効である可能性があります。重要な点は、コードからすでに意味を読み取ることができるということです。

   conditionMet() && gotForIt();

   if (conditionMet()) goForIt();

自分で決めてください。ある行から別の行へと混在させないでください。コード全体で 1 つのスタイルを維持してください。

于 2011-08-06T12:45:36.753 に答える