2012-10-31 76 views
1

我注意到一些奇怪的編碼風格在PHP/WordPress的代碼:PHP/WordPress的,不同的編碼風格

我很驚訝我怎麼經常看到:

1)在功能開始退貨在功能開始時返回的PHP/Wordpress代碼。例如:

function dosomething() { 
    if (!current_user_can($priv)) { 
     return; 
    } 
    .... continued code 

用於什麼,而不是通常被認爲是很好的做法,那就是,很少有多重回報(他們基本的GOTO):

function dosomething() { 
    if (current_user_can($priv)) { 
     ... do something 
    } 
    ... any finishing code 
} 

2)括號的缺乏如果是

在大多數其他語言中,沒有括號的單行if/else語句被認爲是凌亂/危險的,因爲當實際上沒有時,其他行可能會運行。但是我已經在PHP/Wordpress中看到過很多次。

我想知道這些不同的款式是否有性能優勢,或者其他具體的使用原因?

回答

1

與性能無關。第一個是保證沒有任何內容可以被未經授權的用戶處理(爲了確保他們不會在你的例子中運行「...任何結束代碼」),第二個是用於簡單的if/else語句的樣式偏好。

+0

我不明白爲什麼將所有內容都包含在if中並不常見,那麼它不需要否定邏輯(如果* not *(loggedin)然後*不*運行this),並且返回它很容易錯過代碼,你的意思是每次運行最後。 – NoBugs

+1

也許是這樣,但我不明白爲什麼人們會在代碼中做很多事情。也許這是對php的極端寬容,鼓勵如此多的表達本質上相同的事物。在我看來,這種回報風格並不難理解,除非函數的開頭有很多。我有不幸繼承了數百個不同的編碼風格的不同項目,我認爲我實際上已經因爲它而憎恨生活。話雖如此,與許多其他選擇CMS包相比,WordPress的煩惱是輕微的。 –

2

我想說這是值得商榷的。如果你的單行條件沒有大括號,處理上的差別非常小,它不可能提高性能。

函數開始處的返回是爲了防止它在運行過程中失敗,即使它不符合該條件。您可能已經知道,通過查看代碼,但可能沒有考慮到該函數將在返回之前進行評估,因此您的函數可能會有幾十個條件在第一個條件之後永遠不會滿足。如果你不需要,那麼在處理這些時沒有意義。

順便說一下,這不是特定於wordpress的。我已經看到它遍佈整個地方。