我來自Java/Objective-C到PHP,發現它可怕的。我的意思是,PHP很好,真的。但是當你看到一堆變量時,你不知道:這是一個數字嗎?這是一個字符串嗎?或者,即使是一個花哨的對象,它可以在調用方法時執行操作?有沒有有用的PHP命名約定?
所以我想知道是否有幫助重新使用命名約定的變量來幫助弄清楚某物是否是某物,或者某物只是一個無聊的變量。我會說如果某物是一個對象,即一個類的實例,那麼第一個字符必須是大的。但這只是一個猜測。希望閱讀來自PHP專家的一些提示:-)
我來自Java/Objective-C到PHP,發現它可怕的。我的意思是,PHP很好,真的。但是當你看到一堆變量時,你不知道:這是一個數字嗎?這是一個字符串嗎?或者,即使是一個花哨的對象,它可以在調用方法時執行操作?有沒有有用的PHP命名約定?
所以我想知道是否有幫助重新使用命名約定的變量來幫助弄清楚某物是否是某物,或者某物只是一個無聊的變量。我會說如果某物是一個對象,即一個類的實例,那麼第一個字符必須是大的。但這只是一個猜測。希望閱讀來自PHP專家的一些提示:-)
與其他語言一樣,PHP中沒有單一編碼標準。您可以參閱Zend coding standards等其他(請參閱評論),他們非常重視,因爲它們與PHP核心開發團隊非常接近(並且部分相同)。
請加PEAR:http://pear.php.net/manual/en/standards.php – Gordon 2009-12-22 21:11:12
我也堅持Zend編碼準則:camelCasedVariables,This_Class_Naming_Scheme,BIG_CONSTANTS和實際上告訴你它們代表$ databaseConnection的標識符的$ dbc。 – selfawaresoup 2009-12-22 21:17:11
什麼是阻止你使用你已經熟悉的約定?很可能沒有什麼是您以前沒有見過的PHP獨有的。
我平時堅持這個簡單的規則
Meaningfull駝峯變量名稱(類型爲前綴之前) 例如:intNbDaysLeft將是很好的一個整數
Yuck!那麼你如何在一個持有'Zend_Gdata_MimeBodyString'的變量前加上前綴? :) – Gordon 2009-12-22 21:33:32
當dataType很長且很複雜時,我通常會取每個單詞的第一個字母。所以你會得到像zgmbsVariable這樣的東西。 有些人只將它縮小到前三個字母,或者我們所做的是在Object +前加上一個有意義的名稱。再一次,我堅持MEANINGFULL。 如果你明白你在寫什麼和別人在做什麼,那就沒問題。 這完全是你如何習慣工作的問題。 – 2009-12-22 21:46:35
有意義的+系統匈牙利?我很確定這是一個矛盾。 – Johrn 2009-12-22 23:14:25
我使用Zend的Eclipse的,所以我形容我的變量像這樣,以確保他們被智能授權。然後,我不擔心,「這是什麼?」
/**
* @var Zend_Form_Element
*/
protected $_member;
或
/**
* @param Zend_Form_Element $input
*/
function do_it($input)
或
$my_var = some_function(); /* @var $my_var Zend_Form_Element */
這就是PHPDoc,而不是「Zend Eclipse約定」。 – chelmertz 2009-12-22 21:21:09
你應該很快就會發現,有在PHP中的小類型提示,以及其原因很明顯,在這個充滿活力的語言類型可以改變,所以名字不是很重要。
在Eclipse或NetBeans中使用PHPDoc有幫助,但是你不能依賴它,如果你想確保你的變量是特定類型的,你必須檢查它(is_array(),instanceof等)。
另外,PHP爲您做了很多工作,它會代表您在不同類型的用戶之間進行轉換,這取決於類型。
PHP主要適用於字符串,所以大多數變量都屬於這種類型。應用程序可以有很多類型,但是單個方法不應該使用太多。如果你發現自己使用了太多的對象,你不能輕鬆跟蹤他們的實例名稱,那麼這是一些設計問題,而不是命名約定問題。
如果你想確定你沒有錯誤地使用過一些變量,一定要進行單元測試。在PHP中的標準是phpunit
「PHP大部分都是和字符串一起工作的,所以大多數變量都是這種類型的......」[引文需要] – nickf 2009-12-22 23:17:59
數字或字符串?那麼,它可以是兩個,取決於你在腳本中的位置(變量不像JAVA那樣強類型化)。 – 2009-12-22 21:08:47
PHP的真正命名問題是內置庫中完全不一致的命名方案和參數順序。 – phoebus 2009-12-22 21:11:09
Objective-C中沒有強制的命名約定,所以這大部分都在你的腦海中。 – 2009-12-22 21:13:15