2015-09-09 21 views
3

我有很早的代碼可以追溯到2011年,並且我得到了很多有關我的代碼佈局方式的嚴格標準的錯誤。array_shift(array_keys) - (array_pop) - 舊的代碼問題

 if (!isset($End)) { 
        $Info['Card'] = array_shift(array_keys($Info['Cards'])); 
       } 

      if (!isset($Game['Pack']) || !in_array($Game['Pack'], $Packs)) { 
       $Game['PackName'] = array_shift(array_values($Packs)); 
       $Game['Pack'] = $this->GetPackInfo($Game['PackName']); 
      } 

       $Params['Password'] = array_pop(explode("\t", $Attr)); 

什麼是正確的方式來奠定這個代碼?

+2

你能告訴我們你爲這個代碼得到了什麼錯誤嗎?請具體說明你想要的產品? –

+0

相信我,2011年不是「很老」的代碼! : - 我必須定期與一個可以追溯到2007年的代碼庫合作。是的,現在肯定已經開始被認定爲「老」了。無論如何,一段代碼的年齡並不是真正的相關因素;重要的是質量 - 在現實世界中有一些*真正*舊的代碼(30年以上,在某些地方還有更多),它仍然很強大,因爲它首先寫得很好。 – Simba

+0

重申您的「嚴格標準」錯誤;如果您真的可以向我們展示錯誤和發生的上下文會有幫助 - 它們是運行時錯誤還是在構建過程中?你使用的是什麼版本的PHP?你最近升級了嗎?你使用了什麼其他工具?其中一人是否報告錯誤?請提供更多信息。 – Simba

回答

1

你沒有在問題中明確指出它,但我解釋了你的短語「有關我的代碼佈局方式嚴格標準的錯誤」,這意味着你正在運行PHP代碼嗅探器或類似的工具,這是你從哪裏獲取這些錯誤的地方。

PHP Code Sniffer是一個很好的工具,用於分析您的代碼是否符合某些指導原則。

對此有許多指導方針 - 人們幾十年來一直在爭論是否使用製表符或空格進行縮進,是否使用CamelCase或snake_case作爲變量名稱以及其他許多要點。

PHP代碼嗅探器足夠靈活,能夠處理這些指南中的任何一條,並且可以配置爲檢查您的代碼是否有一個通用標準或您自己的自定義設置。

近年來,PHP世界已經在由PHP-FIG (Framework Interop Group)定義的一組通用標準中解決了問題。這些標準稱爲PSR1,PSR2等。對於PHP代碼嗅探器,您只需指定--standard=psr2即可根據PSR標準檢查您的代碼。

正如我所說的,還有其他的標準可供您使用,但是現在大多數PHP代碼正在寫入PSR標準,所以這是一個很好的開始。

與所有其他編碼標準一樣,PSR標準純粹是意見一致;不符合任何標準的代碼不是「錯誤的」;它只是更難閱讀。

您引用的代碼在幾個方面不符合PSR標準,主要是在引用的位中對變量名進行縮進和大寫。

如果您想改變代碼以符合標準,應該相當容易。 PHP代碼嗅探器還附帶一個名爲PHPCBF(PHP代碼美化和修復器)的配套工具,它可以自動糾正PHP代碼嗅探器檢測到的至少一些錯誤。

另一種方法就是保持原樣;如果這是一大塊舊代碼被合併到一個新的項目中,那麼將它保持分開並簡單地排除測試中的舊代碼是有意義的。