我一直在想,這是否速記,如果我們可以稱呼它,是編碼的親PHP開發者中可接受的做法:常見做法?
foo() && bar();
,而不是
if(foo()) {
bar();
}
雖然IMO單線代碼很整潔,我沒有看到它在任何地方使用。
我一直在想,這是否速記,如果我們可以稱呼它,是編碼的親PHP開發者中可接受的做法:常見做法?
foo() && bar();
,而不是
if(foo()) {
bar();
}
雖然IMO單線代碼很整潔,我沒有看到它在任何地方使用。
這是多種語言開發人員的常見做法。技術上沒有什麼問題,但根據它在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
就我個人而言,我沒有看到任何問題。這是相當普遍的,所以大多數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