我發現有很多if-else語句,尤其是嵌套if語句時,這些語句使得我的代碼不易讀。如何減少PHP中if語句的數量?如何減少PHP中if-else語句的數量?
我的提示如下: 1.在合適的時候使用switch語句; 2.在可行時使用exit()語句; 3.在可行時使用三元語句;
是否有其他技巧可以減少if else語句,尤其是嵌套的if-else語句?
我發現有很多if-else語句,尤其是嵌套if語句時,這些語句使得我的代碼不易讀。如何減少PHP中if語句的數量?如何減少PHP中if-else語句的數量?
我的提示如下: 1.在合適的時候使用switch語句; 2.在可行時使用exit()語句; 3.在可行時使用三元語句;
是否有其他技巧可以減少if else語句,尤其是嵌套的if-else語句?
將您的代碼重構爲更小的工作單元。過多的條件邏輯是代碼異味,通常表明你的函數需要重構。
使用三元運算符,重構你的代碼,編寫一個函數或者一個完成if語句所需的類。
多態性可以擺脫一些的爲好,allthough更難實現減少的if/else在PHP,因爲它不是類型安全的...
嘗試使用「早日重返」如果可能的話,以減少嵌套深度。嘗試使用布爾表達式評估。
例子:
function foo($param)
{
$ret = false;
if(userIsLoggedIn()) {
if(is_array($param)) {
if($param['count'] > 0) {
$ret = true;
}
else {
$ret = false;
}
}
}
return $ret;
}
你可以重寫此類似:
function foo($param)
{
if(!userIsLoggedIn()) return false;
if(!is_array($param)) return false;
return $param['count'] > 0;
}
我工作的很多代碼都充滿了不斷髮展的業務邏輯,需要每隔一天修改一次。兩個提示確實幫助我跟上修改:避免所有其他語句,並儘快返回/退出。永遠不要深入嵌套 - >創建子例程/函數。
與否定更換所有else語句if語句使代碼更易於閱讀從上到下(在condtion的接近性代碼塊):
# business logic block
if ($condition) {
# do something
# code code code
} else {
# code code code
return;
}
# refactored:
if (! $contition) {
# code code code
return;
}
if ($condition) {
# code code code
}
其次,返回/退出儘快。我當然認爲,但是當你已經確定了子程序的結果時,特別是當你想從上到下閱讀代碼時,我並沒有看到任何額外的條件/測試。消除所有歧義使事情變得更簡單。
總之,我喜歡避免在BL的長列表中使用其他字符。知道結果後立即返回。如果嵌套級別大於2,則創建子例程/函數。
這當然可以重構爲: – 2011-10-01 20:20:18
+1這是非常重要的,因爲它可以減少幾KB的文件大小! – Xeoncross 2009-11-26 15:22:29
+1也適用於繼續,休息,拋出。您通常可以保持較低的循環複雜度,從而使代碼更具可讀性。 – NikiC 2011-09-25 11:57:05
另外我個人只會使用'return userIsLoggedIn()&& is_array($ param)&& $ param ['count']> 0;'這裏。它簡短而簡潔。 – NikiC 2011-09-25 12:00:02