本文介紹下,php程式設計中的命名規範,包括基本概念、駱駝式命名法、駝峰法、Pascal方法,有需要的朋友,不妨參考學習下了。
駱駝式命名法(又稱駝峰命名法),正如它的名稱CamelCase所表示的那樣,是指混合使用大小寫字母來構成變數和函數的名字。程式設計師為了自己的程式碼能 更容易的在同行之間交流,所以多採取統一的可讀性比較好的命名方式。例如:有些程式設計師喜歡全部小寫,有些程式設計師喜歡用底線,所以如果要寫一個my name的變量,他們常用的寫法會有myname、my_name、MyName或是myName。這樣的命名規則不適合所有程式設計師閱讀,而利用駝峰命名 法來表示,可以增加程式可讀性。例如,下面是分別用駱駝式命名法和底線法命名的同一個函數: printEmployeePaychecks(); print_employee_paychecks();第一個函數名稱使用了駱駝式命名法-函數名稱中的每一個邏輯斷點都有一個大寫字母來標記; 第二個函數名使用了底線法----函數名中的每一個邏輯斷點都有一個底線來標記。 下劃線法是c出現後開始流行起來的,在許多舊的程序和UNIX這樣的環境中,它的使用非常普遍。 駱駝式命名法(Camel-Case)是電腦程式編寫時的一套命名規則(慣例)。 駱駝式命名法就是當變數名稱或函數名稱是由一個或多個單字連結在一起,而構成的唯一識別字時,第一個單字以小寫字母開始;第二個單字的首字母大寫或每一個字的首字母都採用大寫字母,例如:myFirstName、myLastName,這樣的變數名稱看起來就像駱駝峰一樣此起彼伏,故得名。 駱駝式命名法(Camel-Case)一詞來自Perl 語言中普遍使用的大小寫混合格式,而Larry Wall 等人所著的暢銷書《Programming Perl》(O'Reilly 出版)的封面圖片正是一隻駱駝。 駱駝式命名法的命名規則可視為一種慣例,並無絕對與強制,為的是增加辨識與可讀性。 駝峰法(小駝峰法) 變數一般用小駝峰法標識。駝峰法的意思是:除第一個單字之外,其他單字首字母大寫。例如: int myStudentCount;變數myStudentCount第一個字是全部小寫,後面的字首字母大寫。 Pascal法(大駝峰法) 相較於小駝峰法,大駝峰法把第一個字的首字母也大寫了。常用於類別名,函數名,屬性,命名空間。例如: publicclass DataBaseUser;附,php命名規則 合適的命名是程序規劃的核心。 名字就是事物在它所處的生態環境中一個長久而深遠的結果。總的來說,只有了解系統的程式設計師才能為系統取出最合適的名字。如果所有的命名都與其自然相適合,則關係清晰,意義可以推導得出,一般人的推想也能在意料之中。 如果你發覺你的命名只有少量能和其對應事物相匹配的話, 最好還是重新好好再看看你的設計吧。 類別命名 在為類別(class )命名前首先要知道它是什麼。如果透過類別的提供的線索,你還是想不起這個類別是什麼的話,那你的設計就還做的不夠好。 超過三個字組成的混合名是容易造成系統各個實體間的混淆,再看看你的設計,試著用(CRC Se-ssion card)看看這個命名所對應的實體是否有著那麼多的功用。 對於衍生類別的命名應該避免帶其父類別名稱的誘惑,一個類別的名字只與它本身有關,和它的父類別叫什麼無關。 有時後綴名是有用的,例如:如果你的系統使用了代理(agent ),那麼就把某個部件命名為“下載代理”(DownloadAgent)用以真正的傳送信息。 方法和函數命名 通常每個方法和函數都是執行一個動作的,所以它們的命名應該清楚的說明它們是做什麼的:用CheckForErrors()代替ErrorCheck(),用DumpDataToFile()代替DataFile()。這麼做也可以讓功能和數據成為更可區分的物體。 有時後綴名是有用的: Max - 意義為某實體所能賦予的最大值。 Cnt - 一個運行中的計數變數的目前值。 Key - 鍵值。 例如:RetryMax 表示最多試次數,RetryCnt 表示目前重試次數。 有時前綴名是有用的: Is - 意義為問一個關於某樣事物的問題。無論何時,當人們看到Is就會知道這是一個問題。 Get - 意義為取得一個數值。 Set - 意義為設定一個數值 例如:IsHitRetryLimit。 縮寫詞不要全部使用大寫字母 無論如何,當遇到以下情況,你可以用首字母大寫其餘字母小寫來代替全部使用大寫字母的方法來表 示縮寫詞。 使用: GetHtmlStatistic. 不使用: GetHTMLStatistic. 理由 當命名含有縮寫時,人們似乎有著非常不同的直覺。統一規定是最好,這樣一來,命名的意思就完全可以預知了。 舉個NetworkABCKey的例子,注意C是應該是ABC裡面的C還是key裡面的C,這個是很令人費解的。有些人不在乎這些,其他人卻很討厭這樣。所以你會在不同的程式碼裡看到不同的規則,使得你不知道怎麼去叫它。 例如 class FluidOz // 不要寫成 FluidOZ class GetHtmlStatistic // 不要寫成 GetHTMLStatistic類別命名 使用大寫字母作為單字的分隔,其他的字母都使用小寫 名字的首字母使用大寫 不要使用底線('_') 理由 根據許多的命名方式,大部分人認為這樣是最好的方式。 例如 class NameOneTwoclass Name 類別庫命名 目前命名空間正在越來越廣泛的被採用,以避免不同廠商和團體類別庫間的類別名稱衝突。 當尚未採用命名空間的時候,為了避免類別名稱衝突,一般的做法是在類別名稱前加上獨特的前綴,兩個字元就可以了,當然多用一些會更好。 例如 John Johnson的資料結構類別庫可以用Jj做為前綴,如下: class JjLinkList { }方法命名 採用與類別命名一致的規則 理由 使用所有不同規則的大部分人發現這是最好的折衷方案。 例如 class NameOneTwo { function DoIt() {}; function HandleError() {}; }類別屬性命名 屬性命名應該以字元‘m’為前綴。 前綴‘m’後採用於類別命名一致的規則。 ‘m’總是在名字的開頭起修飾作用,就像以‘r’開頭表示引用一樣。 理由 前綴'm'防止類別屬性和方法名稱發生任何衝突。你的方法名稱和屬性名稱經常會很類似,特別是存取元素。 例如 class NameOneTwo { function VarAbc() {}; function ErrorNumber() {}; var mVarAbc; var mErrorNumber; var mrName; }方法中參數命名 第一個字元使用小寫字母。 首字後的所有字都依照類別命名規則首字大寫。 理由 你可以隨時知道那個變數對應那個變數。 你可以使用與類別名稱相似的名稱而不至於產生重名衝突。 例如 class NameOneTwo { function StartYourEngines( &$rSomeEngine, &$rAnotherEngine); }變數命名 所有字母都使用小寫 使用'_'作為每個字的分界。 理由 透過這條途徑,程式碼中變數的作用域是清晰的。 所有的變數在程式碼中都看起來不同,容易辨認。 例如 function HandleError($errorNumber) { $error = OsErr(); $time_of_error = OsErr->getTimeOfError; $error_processor = OsErr->getErrorProcessor; }引用變數和函數回傳引用 引用必須帶‘r’前綴 理由 使得類型不同的變數容易辨認 它可以確定哪個方法返回可更改對象,哪個方法返回不可更改對象。 例如 class Test { var mrStatus; function DoSomething(&$rStatus) {}; function &rStatus() {}; }全域變數 全域變數應該要帶前綴‘g’。 理由 知道一個變數的作用域是非常重要的。 例如 global $gLog; global &$grLog;定義命名 / 全域常數 全域常數用'_'分隔每個單字。 理由 這是命名全域常數的傳統。你要注意不要與其它的定義相衝突。 例如 define("A_GLOBAL_CONSTANT", "Hello world!";靜態變數 靜態變數應該要帶前綴‘s’。 理由 知道一個變數的作用域是非常重要的。 例如 function test(){ static $msStatus = 0; }函數命名 函數名字採用C GNU的慣例,所有的字母使用小寫字母,使用'_'分割單字。 理由 這樣可以更容易區分相關聯的類別名稱。 例如 function some_bloody_function() { }錯誤回傳偵測規則 檢查所有的系統呼叫的錯誤訊息,除非你要忽略錯誤。 為每個系統錯誤訊息定義好系統錯誤文字以便include。 大括號 {} 規則 在三種主要的大括號放置規則中,有兩種是可以接受的,如下的第一種是最好的: 將大括號放置在關鍵字下方的同列: if ($condition) while ($condition) { { ... ... } }傳統的UNIX的括號規則是,首括號與關鍵字同行,尾括號與關鍵字同列: if ($condition) { while ($condition) { ... ... } }理由 引起劇烈爭論的非原則的問題可透過折衷的辦法解決,兩種方法任意一種都是可以接受的,然而對於大 多數人來說更喜歡第一種。原因就是心理研究學習範疇的東西了。 對於更喜歡第一種還有更多的原因。如果您使用的字元編輯器支援括號匹配功能的話(例如vi),最 重要的就是有一個好的樣式。為什麼?我們說當你有一大塊的程式而且想知道這個大塊程式是在哪裡結 束的話。你先移到開始的括號,按下按鈕編輯器就會找到與之對應的結束括號,例如: if ($very_long_condition && $second_very_long_condition) { … } else if (...) { … }從一個程式區塊移動到另一個程式區塊只需要用遊標和你的括號匹配鍵就可以了,不需要來回的移動到行末去找匹配的括號。 |