2011-06-25 21 views
13

我正在與/在一個非常陳舊的網站上工作,我不會將其命名爲。似乎在現有的代碼重新存在的模式,沿着線:PHP函數中返回語句後的代碼

function foo() { 
    $a = 'a'; 
    $b = 'b'; 

    return; 

    $c = 'c'; 
    $d = 'd'; 
} 

我很relunctant從,我沒有寫一個函數刪除現有的代碼,並且一切工作的是。但我想知道爲什麼?

我學到的所有東西(除goto行調用外)都告訴我return語句後面的代碼是無用的。是嗎?爲什麼前面的程序員會這樣做?

+2

是的。也許他正在測試一些東西。 –

+0

我很欣賞需要弄清楚爲什麼以前的開發者做了一些令人困惑和愚蠢的事情。我們經常發現自己只是聳聳肩,然後繼續前進......直到數週後我們忘記了我們所做的事情。 –

+0

乾杯 - 我知道對不對?我在該項目中面對的時間是瘋狂的 – Chris

回答

17

return語句之後的代碼將永遠不會執行。很可能最初的開發人員想要快速測試其他變量值,並在功能中留下他的舊實驗。使用版本控制,你可以刪除現有的代碼,並恢復它,如果你再次需要它

+0

感謝您的確認 - 測試最有可能是背後的原因。版本控制是一個好點,也許我需要開始看,只是沒有遇到一個負擔得起的私人服務 – Chris

+0

@chris:負擔得起的私人服務?使用dvcs(例如[git](http://git-scm.com)或[mercurial](http://mercurial.selenic.com/)),都是開源軟件。他們也允許你在本地擁有版本歷史,而不需要服務器 – knittl

+0

我在想你需要通過github,googlecode或類似的方式 – Chris

3

返回語句下面的代碼是無用的,它不會被執行。

1

我的第一個想法是,編寫代碼的人最初添加返回,因爲代碼後,它不再需要運行,但出於某種原因不想刪除其他代碼。

可能出現這種情況的一個例子是,作者重寫了代碼以不同的方式實現代碼。他們把新的實現放在return語句的上面,但是把代碼放在它的下面,以便它在那裏作爲它過去如何完成的「參考」。這樣,如果他們意識到新代碼中沒有工作,他們就可以輕鬆查看舊代碼。

不可否認的是,版本控制和單元測試使得這種方法的用處不大,但反正做這件事並不罕見。