本文介紹下,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 // 不要寫成 FluidOZclass 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 (...){...}從一個程式塊移動到另一個程式塊只需要用游標和你的括弧匹配鍵就可以了,不需要來回的移動到行末去找匹配的括弧。 |