- 相關(guān)推薦
PHP如何編寫(xiě)易讀的代碼
成功的開(kāi)發(fā)團(tuán)隊(duì)要求隊(duì)伍中的每一位成員遵守代碼重用規(guī)則,這些規(guī)定把代碼的重用性推到極至同時(shí)卻不會(huì)顯著降低開(kāi)發(fā)人員的創(chuàng)造力和開(kāi)發(fā)效率。如果編寫(xiě)和使用代碼的開(kāi)發(fā)人員遵守共同的程序命名規(guī)范代碼和代碼注釋要求,那么代碼的重用性就會(huì)得以大大提升。這些標(biāo)準(zhǔn)的起點(diǎn)是系統(tǒng)結(jié)構(gòu)級(jí)的。你的功能規(guī)范應(yīng)該在類、屬性的名字、函數(shù)返回值以及其他關(guān)鍵程序元素的定義中反映這些標(biāo)準(zhǔn)。本文將就基本的命名規(guī)則和注釋提出一些可行的建議,意圖幫助讀者開(kāi)發(fā)自己的代碼重用標(biāo)準(zhǔn)。
大小寫(xiě)標(biāo)準(zhǔn)
在我們開(kāi)始討論各類程序要素命名的正確方式之前,先讓我們定義區(qū)分元素的字符大小寫(xiě)的兩種最常用方式,它們是:
Pascal規(guī)范—第1個(gè)字符大寫(xiě),目標(biāo)名中的每個(gè)單詞的第1個(gè)字母也大寫(xiě),比如InvoiceNumber或者PrintInvoice。其他的所有字符都小寫(xiě)。
Camel規(guī)范—第1個(gè)字符不大寫(xiě),但目標(biāo)名中的每個(gè)單詞的第1個(gè)字母大寫(xiě),比如,invoiceNumber。其他的所有字符都小寫(xiě)。
可是,采用字符大小寫(xiě)區(qū)分元素可能在對(duì)大小寫(xiě)不敏感的編程語(yǔ)言中引發(fā)問(wèn)題。比方說(shuō),由于C#語(yǔ)言區(qū)分大小寫(xiě),所以你可以調(diào)用私有變量employee,接著它所具有的公共屬性Employee則可以被調(diào)用者所用。這些操作是完全合法的。但是,對(duì)VisualBasic來(lái)說(shuō)就會(huì)產(chǎn)生錯(cuò)誤,因?yàn)閂B是不區(qū)分字母大小寫(xiě)的,以上兩種元素在VB看來(lái)都是一回事。假如你在混合語(yǔ)言環(huán)境下工作,你只能指定某些規(guī)則要求開(kāi)發(fā)人員合理利用多種語(yǔ)言閱讀其他人開(kāi)發(fā)的代碼。
命名標(biāo)準(zhǔn)
假設(shè)我們采用了以上的大小寫(xiě)標(biāo)準(zhǔn),現(xiàn)在就讓我們了解一些通用程序元素的簡(jiǎn)單命名建議。
類
某些類設(shè)計(jì)為模擬真實(shí)世界的對(duì)象,就這些類來(lái)說(shuō),所選用的名字就應(yīng)該反映真實(shí)世界的對(duì)象、具有單數(shù)名詞的格式,比方Employee、Invoice或者Timecard等。對(duì)內(nèi)部類而言可以采用Pascal規(guī)范令結(jié)果類具有單數(shù)形式的名字,比如ThreadPool或者CustomColor等。類應(yīng)當(dāng)是單數(shù)的,這樣它們的復(fù)數(shù)形式就可以代表同類的集合名,比如Employees數(shù)組等。
類的成員
采用C#以及其他大小寫(xiě)敏感編程語(yǔ)言的開(kāi)發(fā)人員應(yīng)當(dāng)采用camel規(guī)范命名類成員的名字。這樣做可以讓開(kāi)發(fā)者更易于區(qū)分內(nèi)部變量的名字(name)和公共屬性的名字(Name)。許多VB開(kāi)發(fā)人員更喜歡采用匈牙利命名法為類成員起名,也就是在名字前面加上前綴表示變量的類型,比如sName就指的是string類型的Name變量。我認(rèn)為,在使用VS.NET這樣高級(jí)的開(kāi)發(fā)環(huán)境下這樣做是不必要的,因?yàn)樵谶@種情況下系統(tǒng)鼠標(biāo)停留在變量之上即可可自動(dòng)顯示變量的類型。我個(gè)人喜歡在類成員名前加上前綴:小寫(xiě)的字母m。這樣內(nèi)部變量就保存了足夠的內(nèi)部類信息:內(nèi)部變量mName就正好代表了公共屬性Name。
方法
方法應(yīng)該用Pascal規(guī)范命名,同時(shí)用合理的方式說(shuō)明他們的實(shí)施行為。比方說(shuō),給數(shù)據(jù)庫(kù)添加雇員的方法可以命名為AddEmployee,而打印發(fā)票的方法則不妨命名為PrintInvoice。假如方法返回的是布爾值,那么方法名應(yīng)該以動(dòng)詞開(kāi)頭以便用在if語(yǔ)句的時(shí)候其含義更明顯。比如說(shuō),假如你有一個(gè)方法的功能是確定某位雇員是否符合公司401k計(jì)劃的要求,那么你可以在If語(yǔ)句中調(diào)用IsEligible401k方法:IfIsEligible401kthen…
方法參數(shù)、返回值和變量
所有的方法參數(shù)、返回值和變量都應(yīng)該采用Pascal規(guī)范命名,同方法名一樣也應(yīng)該能反映參數(shù)或者變量所代表的含義。這一點(diǎn)對(duì)參數(shù)方法而言特別重要,因?yàn)槟阍谡{(diào)用方法的時(shí)候智能感知(Intellisense)會(huì)返回參數(shù)名和參數(shù)類型。所有采用方法的開(kāi)發(fā)人員都應(yīng)該使用描述性的名字和類型,便于相互理解其含義。
控件
控件命名是開(kāi)發(fā)領(lǐng)域一個(gè)經(jīng)常引發(fā)爭(zhēng)議的問(wèn)題。雖然大多數(shù)人贊同不應(yīng)該使用控件的默認(rèn)名稱,比如TextBox1或者Label1等等,但是,他們還反對(duì)按照變量的方式命名控件或者采用前綴表示控件的類型。我比較喜歡采用標(biāo)準(zhǔn)的三字母前綴命名窗體中控件的名字。比如說(shuō),保存姓氏和名字的文本框控件就不妨分別命名為txtLastName和txtFirstName。處理窗體數(shù)據(jù)的命令按鈕則可以命名為cmdSubmit或者cmdCancel。其實(shí),只要你能保證控件命名的一致性而且標(biāo)準(zhǔn)易于理解即可。
注釋
注釋代碼對(duì)所有開(kāi)發(fā)人員來(lái)說(shuō)都是必要的。為了教授正確的注釋技術(shù),我就經(jīng)常在自己的演示程序中添加注釋代碼。同時(shí),為了簡(jiǎn)化注釋過(guò)程,我建議開(kāi)發(fā)人員首先編寫(xiě)注釋說(shuō)明他們想編寫(xiě)的程序。我首先會(huì)寫(xiě)注釋說(shuō)明程序中的過(guò)程、類或者其他程序要素,但對(duì)其具體工作原理不做闡述。然后我會(huì)編寫(xiě)一系列的注釋代碼描述過(guò)程的每一主要步驟或者類的元素。在編寫(xiě)了定義類或者說(shuō)明過(guò)程的代碼之后,我對(duì)各個(gè)外部變量、控件、打開(kāi)的文件乃至其他過(guò)程所訪問(wèn)的元素文檔化,對(duì)輸入?yún)?shù)和返回值做簡(jiǎn)要說(shuō)明。
【PHP如何編寫(xiě)易讀的代碼】相關(guān)文章:
PHP代碼如何規(guī)范08-28
如何閱讀php源代碼09-19
如何正確發(fā)布PHP代碼08-03
PHP中如何實(shí)現(xiàn)crontab代碼05-30
如何在cmd下面寫(xiě)php代碼06-21
如何在HTML中嵌入PHP代碼11-07
php代碼如何實(shí)現(xiàn)命令行執(zhí)行05-19
PHP代碼優(yōu)化技巧09-10
php語(yǔ)言字典代碼06-08