融于團隊開發你必須知道的B/S語言下常見命名規范
另外古人相信只要知道一個人真正的名字就會獲得凌駕于那個人之上的不可思議的力量。只要給事物想到正確的名字,它就可以帶來比代碼更強的力量。如果所有的命名都與其自然相適合,則關系清晰,含義可以推導得出,一般人的推想也能在意料之中。
本文我們將圍繞著“命名規則”這個主題展開討論。收集各種B/S語言下常見命名規范,希望對各位開發能有所幫助。
Java中的命名規則
在面向對象編程中,對于類,對象,方法,變量等方面的命名是非常有技巧的。比如,大小寫的區分,使用不同字母開頭等等。但究其本,追其源,在為一個資源其名稱的時候,應該本著描述性以及唯一性這兩大特征來命名,才能保證資源之間不沖突,并且每一個都便于記憶。
包的命名
Java包的名字都是由小寫單詞組成。但是由于Java面向對象編程的特性,每一名Java程序員都可以編寫屬于自己的Java包,為了保障每個Java包命名的唯一性,在***的Java編程規范中,要求程序員在自己定義的包的名稱之前加上唯一的前綴。由于互聯網上的域名稱是不會重復的,所以程序員一般采用自己在互聯網上的域名稱作為自己程序包的唯一前綴。
例如: net.frontfree.javagroup
類的命名
類的名字必須由大寫字母開頭而單詞中的其他字母均為小寫;如果類名稱由多個單詞組成,則每個單詞的首字母均應為大寫例如TestPage;如果類名稱中包含單詞縮寫,則這個所寫詞的每個字母均應大寫,如:XMLExample,還有一點命名技巧就是由于類是設計用來代表對象的,所以在命名類時應盡量選擇名詞。
例如: Circle
方法的命名
方法的名字的***個單詞應以小寫字母作為開頭,后面的單詞則用大寫字母開頭。
例如: sendMessge
常量的命名
常量的名字應該都使用大寫字母,并且指出該常量完整含義。如果一個常量名稱由多個單詞組成,則應該用下劃線來分割這些單詞。
例如: MAX_VALUE
參數的命名
參數的命名規范和方法的命名規范相同,而且為了避免閱讀程序時造成迷惑,請在盡量保證參數名稱為一個單詞的情況下使參數的命名盡可能明確。
Javadoc注釋
Java除了可以采用我們常見的注釋方式之外,Java語言規范還定義了一種特殊的注釋,也就是我們所說的Javadoc注釋,它是用來記錄我們代碼中的API的。Javadoc注釋是一種多行注釋,以/**開頭,而以*/結束,注釋可以包含一些HTML標記符和專門的關鍵詞。使用Javadoc注釋的好處是編寫的注釋可以被自動轉為在線文檔,省去了單獨編寫程序文檔的麻煩。
例如:
- /**
- * This is an example of
- * Javadoc
- *
- * @author darchon
- * @version 0.1, 10/11/2002
- */
在每個程序的最開始部分,一般都用Javadoc注釋對程序的總體描述以及版權信息,之后在主程序中可以為每個類、接口、方法、字段添加Javadoc注釋,每個注釋的開頭部分先用一句話概括該類、接口、方法、字段所完成的功能,這句話應單獨占據一行以突出其概括作用,在這句話后面可以跟隨更加詳細的描述段落。在描述性段落之后還可以跟隨一些以Javadoc注釋標簽開頭的特殊段落,例如上面例子中的@auther和@version,這些段落將在生成文檔中以特定方式顯示。
雖然為一個設計低劣的程序添加注釋不會使其變成好的程序,但是如果按照編程規范編寫程序并且為程序添加良好的注釋卻可以幫助你編寫出設計***,運行效率高且易于理解的程序,尤其是在多人合作完成同一項目時編程規范就變得更加重要。俗話說“磨刀不誤砍柴工”,花費一點時間去適應一下Java編程規范是有好處的。
#p#
.NET中的命名規則
名稱空間的命名
命名名稱空間的一般規則如下:
CompanyName.TechnologyName
這樣,我們看到的名稱空間應該是這樣的:
Microsoft.Office
PowerSoft.PowerBuilder
注意:這只是一個原則。第三方公司可以選擇其它的名字。
避免用公司名稱或其它著名品牌的名稱作為名稱空間的前綴,這樣會造成兩個公布的名稱空間有同一個名稱的可能性。
例如: 將微軟提供的Office自動類命名為Microsoft.Office
使用Pascal大寫方式,用逗號分隔邏輯成分。
例如:Microsoft.Office.PowerPoint
如果你的品牌使用的是非傳統大寫方式,那么一定要遵循你的品牌所確定使用的大寫方式,即使這種方式背離了通常的名稱空間大寫規則。
例如:NeXT.WebObjects
ee.cummings
類和類成分的命名
類的命名原則是用名詞或名詞短語命名類,使用Pascal大寫。減少類名中縮寫的使用量。不要使用任何類前綴(比如C),不要使用帶下劃線的字符。
例如:public class FileStream {}
public class Button {}
public class String {}
變量的命名
名稱中各單詞首字母均為大寫。
例如:FindLastRecord
RedrawMyForm
在內部范圍中避免使用與外部范圍中的名稱相同的名稱。若訪問錯誤變量,則會產生錯誤結果。若變量與同一名稱的關鍵字沖突,則必須在關鍵字前加適當的類型庫以作標識。
例如:若有一個名為 date 的變量,只能通過調用 System.Date 來使用內部 Date 函數。
函數和方法的命名
函數和方法的命名應該以動詞開始,使用Pascal大寫。不要使用帶下劃線的字符。
例如:InitNameArray
CloseDialog
接口命名原則
使用名詞或名詞短語,或者描述行為的形容詞來命名接口,使用Pascal大寫。 減少接口名中縮寫的使用量,在接口名前加前綴I,以表示這個類型是一個接口。
例如: IComponent(描述性名詞)
ICustomAttributeProvider(名詞短語)
IPersistable(形容詞)
參數的命名
使用描述性參數名。參數名應該具有足夠的描述性,這樣在大多數情況下參數名和它的種類可以用來確定它的意思。根據參數的意思來命名參數,而不是根據參數的種類來命名。我們希望開發工具可以用很方便的方式提供關于參數種類的信息,這樣參數名可以得到更好的使用,可以對語義而不是對種類進行描述。但是偶爾使用根據類型命名的參數名也是完全可以的。不要使用保留參數。如果在下一個版本中需要更多的數據,可以增加進來。
例如:Type GetType (string typeName)
string Format (string format, object [ ] args)
屬性的命名
用名詞或名詞短語命名屬性,屬性與類型要一樣。 用與一個類型的名稱相同的名字來命名屬性時,就使這個屬性的類型成為那個類型。雖然聽起來有些奇怪,但這是正確的。
例如:
- public enum Color {...}
- public class Control {
- public Color Color {get {...} set {...}}
- }
事件的命名
用EventHandloer后綴命名事件處理程序,使用名為sender和e的兩個參數,Sender參數代表提出事件的對象。Sender參數永遠是一個類型對象,即使它可能使用了更為特定的類型,與事件相關的狀態被封裝在一個名為e的事件類范例中。要使用這個類型的正確的、特定的事件類。
例如:
- public delegate void MouseEventHandler(object sender, MouseEvent e);
命名事件名時,需要有之前和之后的時態概念,因此要使用現在時態和過去時態(不要使用BeforeXxx\\AfterXxx的方式)。例如,可以被取消的結束事件就有Closing事件和Closed事件。
長項和常用項的命名
可使用縮寫使名稱長度適中,通常,多于 32 個字符的變量名在低分辨率的監視器上難以閱讀。同時,請確保縮寫在整個應用程序中保持一致。
例如:可以使用“HTML”代替“HyperText Markup Language”。
代碼書寫格式規范
◆ 文件之中不得存在無規則的空行,比如說連續十個空行。一般來講函數與函數之間的空行為2-3行。
◆ 在函數體內部,在邏輯上獨立的兩個函數塊可適當空行,一般為1-2行。
◆ 每行長度盡量避免超過屏幕寬度,應不超過80個字符。
◆ 盡量用公共過程或子程序去代替重復的功能代碼段。
◆ 使用括號清晰地表達算術表達式和邏輯表達式的運算順序。如將 x=a*b/c*d 寫成 x=(a*b/c)*d可避免閱讀者誤解為x=(a*b)/(c*d)。
◆ 避免采用過于復雜的條件測試。
◆ 避免過多的循環嵌套和條件嵌套。
◆ 一個函數不要超過200行。一個文件應避免超過2000行。
◆ 避免使用goto語句。
◆ 避免采用多賦值語句,如x = y = z;。
代碼注釋規范
.cs文件的注釋
所有.cs文件開頭都要加上注釋,寫明文件創建時間、作者、用途概述等
例如:
- //********************************************************
- //新增日期:2004.7.19
- //作者:XXX
- //內容說明: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- //********************************************************
函數過程注釋
所有的函數體開頭都要加上注釋,所以注釋使用.NET注釋規范。
例如:
- /// <summary>
- /// 構造函數
- /// </summary>
- /// <param name='is_xxx1'>示例參數1</param>
- /// <param name='is_xxx2'>示例參數2</param>
- public UpgradeThread(string is_xxx1, string is_xxx2)
- {
- //…
- }
常量變量注釋
所有的常量變量,無論是全局還是局部使用的,凡是對代碼整體起到關鍵性做用的都需要加上注釋。
例如:
- /// <summary>
- /// 當前線程指向的備份文件本地保存路徑
- /// </summary>
- public string StorePath = '';
代碼修改注釋
當開發者維護以前的程序代碼時,需要在修改處的開始及結尾,加上自己的注釋信息。
例如:
- /BEGIN 2004-7-19 Jayson 修正了XXX問題
- 略…
- //END 2004-7-19 Jayson
#p#
PHP中的命名規則
類的命名
在為類(class )命名前首先要知道它是什么。如果通過類名的提供的線索,還是想不起這個類是什么的話,那么就說明設計存在問題。
超過三個詞組成的混合名是容易造成系統各個實體間的混淆,嘗試使用(CRC Se- ssion card)看看該命名所對應的實體是否有著那么多的功用。
◆ 對于派生類的命名應該避免帶其父類名的誘惑,一個類的名字只與它自身有關,和它的父類叫什么無關。
◆ 使用大寫字母作為詞的分隔,其他的字母均使用小寫,名字的首字母使用大寫 。不要使用下劃線('_') 。
例如: class NameOneTwo
class 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;
- }
全局變量的命名
全局變量應該帶前綴‘g’。
知道一個變量的作用域是非常重要的。
例如:global $gLog;
global &$grLog;
函數的命名
函數名字采用C GNU的慣例,所有的字母使用小寫字母,使用'_'分割單詞。
這樣可以更易于區分相關聯的類名。
例如:
- function some_bloody_function()
- {
- }
#p#
NoahWeb中的命名規則
NoahWeb汲取了各種編程語言的精華,經過反復的總結,最終形成了一套獨特且高效的命名規則。在命名的過程中,使用“資源名稱+功能描述”的方式,保證了資源之間的唯一性,并且大大提高了資源的描述性和閱讀性。
頁面或動作傳值命名規則
應用 | 規則 | 示范 |
傳遞id使用 | pointid | abc.aspx?pointid=123 |
傳遞name使用 | pointname | abc.aspx?pointname=xxx |
搜索關鍵詞 | keyword | abc.aspx?keyword=xxx |
當前頁索引 | page | abc.aspx?page=1 |
字符資源命名規則
應用 | 規則 | 示范 |
針對表的列表命名 | list_表名[_功能名] | list_user_view |
手寫數據庫操作集 | sql_[表名或功能名] | sql_user_search |
表單命名規則
應用 | 規則 | 示范 |
表單id命名 | 表名+功能 | userLogin |
輸入區控件id命名 | form+對應數據庫的列名 | formId;formname |
數據庫操作命名規則
應用 | 規則 | 示范 |
user_S_ById | ||
user_S_ByName | ||
user_S_Pagelist | ||
查詢 | 表名_S_條件+功能說明 | user_S_ByNamePagelist |
user_S_ByNameSearch | ||
user_S_ByIdTopTen | ||
user_S_ByDateTopTen | ||
user_S_ByDateTopFive | ||
user_S_ByDateTopSet | ||
刪除 | 表名_D_條件+功能說明 | user_D_ById |
插入 | 表名_I_+功能說明 | user_I_NewData |
更新 | 表名_U_條件+功能說明 | user_U_ByIdChangePassword |
動作命名規則
應用 | 規則 | 示范 |
動作命名 | 表名+所屬功能+操作方式
( |
user_manager_add user_manager_add_ex user_manager_list user_manager_search user_manager_viewInfo user_manager_update_ex user_manager_del |
文件上傳命名規則
應用 | 規則 | 示范 |
表單文件上傳區命名規則 | myfile+編號 |
myfile1 myfile2 myfile3 |
cookie命名規則
應用 | 規則 | 示范 |
變量名命名 | cookie+變量名 | cookieusername |
#p#
網站文件命名規則
關于文件的命名,看似無足重輕,但實際上如果沒有良好的命名規則進行必要的約束,一味的亂起名稱,最終導致的結果就是整個網站或是文件夾無法管理。所以,命名規則在這里同樣非常重要。 需要特別注意的時候,網站文件或文件夾命名請盡量避免使用中文字符命名。
文件的命名
以最少的字母達到最容易理解的意義。
索引文件統一使用index.html文件名(小寫) index.html文件統一作為"橋頁",不制作具體內容,僅僅作為跳轉頁和meta標簽頁。主內容頁為main.html。
按菜單名的英語翻譯取單一單詞為名稱。所有單英文單詞文件名都必須為小寫,所有組合英文單詞文件名第二個起***個字母大寫; 所有文件名字母間連線都為下劃線。
例如: 關于我們 \aboutus
信息反饋 \feedback
產 品 \product
圖片的命名
以圖片英語字母為名。以最少的字母達到最容易理解的意義。
對于較小的圖片,我們使用如下格式的命名 :
sm.kahn.gif
其中,sm 代表“small”,kahn 代表圖片的內容。較大圖像的命名規則也一樣,不過是以 bg 開頭的:
bg.kahn.gif
用以區分不同圖像的命名規則應當是全站通用的,這樣可以盡量避免將不同的名稱攪混。
網站目錄的命名
目錄建立的原則是以最少的層次提供最清晰簡便的訪問結構。
服務器的ftp上傳目錄默認為html 根目錄文件 根目錄只允許存放index.html和main.html文件,以及其他必須的系統文件。
每個語言版本存放于獨立的目錄。已有版本語言設置為: 簡體中文 \gb 繁體中文 \big5 英 語 \en 日 語 \jp 每個主要功能(主菜單)建立一個相應的獨立目錄。 根目錄下的images為存放公用圖片目錄,每個目錄下私有圖片存放于各自獨立images目錄.
例如: \menu1\images
\menu2\images
另外,所有的js文件存放在根目錄下統一目錄\script 所有的CSS文件存放在根目錄下的style目錄 所有的CGI程序存放在根目錄并列目錄\cgi_bin目錄。
對于一些信息更新量比較大的站點或是欄目,還可以采用一種更為特殊的方式來進行文件架的命名,這樣能使得日后的維護更加方便,這樣的方式就是使用“單一單詞命名的目錄”+“年年年年_月月_日日”的方式命名,***的“日日”是根據更新量大小可選擇的,如果每日更新量很大則可以加上“日日”。
例如: \news\2005_08\
\news\2005_09\
\news\2005_10_12\
#p#
Dreamweaver文件的命名規則
在Dreamweaver中用戶可以對一系列不同類型的對象進行命名,這些對象包括圖片、層、表單、文件、數據庫域等,這些對象將會被許多不同的工作引擎進行分析處理,這些工具包括各種瀏覽器、JavaScript腳本解析器、網絡服務器、應用程序服務器、查詢語言等等。
如果某個對象的名稱無法被某個解析器識別,就有可能會導致故障的發生,更加麻煩的是用戶可能很難發現問題的原因,例如某個具體的特效無法正確顯示,或者是在某個特殊階段無法正確顯示,有時故障可能只會在某種特殊情況或在使用某個瀏覽器時發生,而在其它情況下保持正常,用戶將很難分析出故障是由于命名問題而導致的。
由于需要命名的對象的種類很多,對這些對象進行解析的引擎工具也很多,因此用戶在給這些對象命名時應該遵循一個常規的標準,以確保普遍兼容性。命名的基本原則就是:使用***的、小寫、不帶空格的名稱,名稱應由字母和數字組成,并以字母開始,名稱中可以包含"_"符號。
***
請確保某對象的名稱與其它對象不同,保證其***的屬性。
例如: 你可以將某對象命名為"feedback_button_3"
小寫
有些服務器和腳本解析器對文件名的大小寫也進行檢查,而為了避免因大小寫引起的不兼容問題,建議用戶在命名時全部使用小寫文件名。
不帶空格
不同的解析器對空格等符號的解析結果不同,例如某些解析器會把空格視為某個十六進制的數值,因此建議用戶使用不帶空格的單詞做為文件對象的名稱。
詞數混合
用戶在命名中可以隨意使用26個羅馬字母以及10個阿拉伯數字,而不建議使用其它標點符號。
以字母開始
有些解析器不喜歡以數字開頭的文件名。
例如: 在某些瀏覽器中的JavaScript腳本內部,如果使用"alpha23"這樣的名稱就不會出現問題,而如果使用"23alpha"這樣的名稱就可能會發生故障。
可包含"_"符號
為了使某個對象的文件名***,用戶可以通過使用"_"符號來更加詳細地描述文件名。
例如: 某對象的文件名可以是"jd_background_17"。
除了上述原則標準之外,我們還需要注意一些其它情況,如文件名與系統的沖突。某些文件名可能滿足上述標準,但可能還會導致故障的發生,原因是因為它們與系統產生了沖突。
例如:當在使用JavaScript腳本函數時,不建議用戶將某個變量命名為"for",因為"for"在本系統下是一個工作語言字串,使用其命名某個變量可能會導致解析器工作出錯。許多程序都有一些保留名稱,這些名稱一般不建議用戶使用。
例如:用戶使用某個SQL程序保留的名稱來命名某個數據庫域,SQL對其進行分析時就可能會報錯。
此外,用戶在將不同來源的代碼編到一起時,應該注意文件名的沖突情況。
例如: 用戶把來自不同資源的兩個JavaScript行為代碼編至同一網頁內,而這兩個行為代碼的變量名相同,這時就有可能出現問題。
因此做為查詢故障的一個技巧,在出現故障時,用戶可以查詢一下相同網頁中是否存在相同文件名的變量名稱。
#p#
VBScript中的命名規則
常數命名規則
VBScript 的早期版本不允許創建用戶自定義常數。如果要使用常數,則常數以變量的方式實現,且全部字母大寫以和其他變量區分。常數名中的多個單詞用下劃線 (_) 分隔。
例如: USER_LIST_MAX 、NEW_LINE
這種標識常數的方法依舊可行,但您還可以選擇其他方案,用 Const 語句創建真正的常數。這個約定使用大小寫混合的格式,并以con”作為常數名的前綴。
例如: conYourOwnConstant
變量命名規則
出于易讀和一致性的目的,請在 VBScript 代碼中使用以下變量命名約定:
子類型 | 前綴 | 示例 |
Boolean | bln | blnFound |
Byte | byt | bytRasterData |
Date (Time) | dtm | dtmStart |
Double | dbl | dblTolerance |
Error | err | errOrderNum |
Integer | int | intQuantity |
Long | lng | lngDistance |
Object | obj | objCurrent |
Single | sng | sngAverage |
String | str | strFirstName |
變量作用域命名規則
變量應定義在盡量小的作用域中。VBScript 變量的作用域如下所示:
變量作用域前綴命名規則
作用域 | 前綴 | 示例 |
過程級 | 無 | dblVelocity |
Script 級 | s | sblnCalcInProgress |
隨著腳本代碼長度的增加,有必要快速區分變量的作用域。在類型前綴前面添加一個單字符前綴可以實現這一點,而不致使變量名過長。
描述性變量名和過程名的命名規則
變量名或過程名的主體應使用大小寫混合格式,并且盡量完整地描述其目的。另外,過程名應以動詞開始,例如 InitNameArray 或 CloseDialog。
對于經常使用的或較長的名稱,推薦使用標準縮寫以使名稱保持在適當的長度內。通常多于 32 個字符的變量名會變得難以閱讀。使用縮寫時,應確保在整個腳本中保持一致。例如,在一個腳本或腳本集中隨意切換 Cnt 和 Count 將造成混亂。
對象命名規則
下表列出了 VBScript 中可能用到的對象命名約定(推薦):
對象類型 | 前綴 | 示例 |
3D 面板 | pnl | pnlGroup |
動畫按鈕 | ani | aniMailBox |
復選框 | chk | chkReadOnly |
組合框、下拉列表框 | cbo | cboEnglish |
命令按鈕 | cmd | cmdExit |
公共對話框 | dlg | dlgFileOpen |
框架 | fra | fraLanguage |
水平滾動條 | hsb | hsbVolume |
圖像 | img | imgIcon |
標簽 | lbl | lblHelpMessage |
直線 | lin | linVertical |
列表框 | lst | lstPolicyCodes |
旋鈕 | spn | spnPages |
文本框 | txt | txtLastName |
垂直滾動條 | vsb | vsbRate |
滑塊 | sld | sldScale |
代碼注釋規則
所有過程的開始部分都應有描述其功能的簡要注釋。這些注釋并不描述細節信息(如何實現功能),這是因為細節有時要頻繁更改。這樣就可以避免不必要的注釋維護工作以及錯誤的注釋。細節信息由代碼本身及必要的內部注釋來描述。
當傳遞給過程的參數的用途不明顯,或過程對參數的取值范圍有要求時,應加以說明。如果過程改變了函數和變量的返回值(特別是通過參數引用來改變),也應在過程的開始部分描述該返回值。
過程開始部分的注釋應包含以下區段標題。相關樣例,請參閱后面的“格式化代碼”部分。
區段標題 | 注釋內容 |
目的 | 過程的功能(不是實現功能的方法)。 |
假設 | 其狀態影響此過程的外部變量、控件或其他元素的列表。 |
效果 | 過程對每個外部變量、控件或其他元素的影響效果的列表。 |
輸入 | 每個目的不明顯的參數的解釋。每個參數都應占據單獨一行并有其內部注釋。 |
返回 | 返回值的解釋。 |
請記住以下幾點:
◆ 每個重要的變量聲明都應有內部注釋,描述變量的用途。
◆ 應清楚地命名變量、控件和過程,僅在說明復雜細節時需要內部注釋。
◆ 應在腳本的開始部分包含描述該腳本的概述,列舉對象、過程、運算法則、對話框和其他系統從屬物。有時一段描述運算法則的假碼是很有用的。
格式化代碼
應盡可能多地保留屏幕空間,但仍允許用代碼格式反映邏輯結構和嵌套。以下為幾點提示:
◆ 標準嵌套塊應縮進 4 個空格。
◆ 過程的概述注釋應縮進 1 個空格。
◆ 概述注釋后的***層語句應縮進 4 個空格,每一層嵌套塊再縮進 4 個空格。例如:
- '*********************************************************
- ' 目的: 返回指定用戶在 UserList 數組中***次出現的位置。
- ' 輸入: strUserList(): 所查找的用戶列表。
- ' strTargetUser: 要查找的用戶名。
- ' 返回: strTargetUser 在 strUserList 數組中***次出現時的索引。
- ' 如果目標用戶未找到,返回 -1。
- '*********************************************************
- Function intFindUser (strUserList(), strTargetUser)
- Dim i ' 循環計數器。
- Dim blnFound ' 發現目標的標記。
- intFindUser = -1
- i = 0 ' 初始化循環計數器。
- Do While i <= Ubound(strUserList) and Not blnFound
- If strUserList(i) = strTargetUser Then
- blnFound = True ' 標記設為 True。
- iintFindUser = i ' 返回值設為循環計數器。
- End If
- ii = i + 1 ' 循環計數器加 1。
- Loop
- End Function
#p#
CSS類及id中的命名規則
Web開發人員可以通過創建CSS類及id名稱并使用這些名稱來對divs以及其他的格式頁面元素進行標識。對開發人員來說,在命名重新定義XHTML標記(tags)的CSS selectors時,必須保證其與預定義的標記準確匹配,但就類以及id選擇器名稱而言,則仁者見仁,智者見智。然而隨心所欲的為這些類以及id命名則并不是個好的習慣。
直觀命名
當在設計Web頁面以及需要對一個div進行標識的時候,最自然的想法就是使用可以描述元素所在頁面位置的詞匯來對其命名。
例如:top-panel
horizontal-nav
left-side
center-column
right-col
這些是CSS以及XHTML類和id的有效命名方式。這些詞匯簡單并且能夠使人顧名思義,因此滿足了標識頁面元素以及相應的CSS樣式的需要。
但問題是這樣的名稱同頁面內容的特定表達方式相關聯。這些命名參考了某種特定頁面布局中的頁面元素位置,因此在這樣的布局之外使用就會顯得不合適甚至造成理解混亂。這些命名沒有涉及文檔內容的結構。因此,下面給出了對CSS類以及ID命名更好的方法。
結構化命名
這些是CSS以及XHTML類和id的有效命名方式。這些詞匯簡單并且能夠使人顧名思義,因此滿足了標識頁面元素以及相應的CSS樣式的需要。 這些是CSS以及XHTML類和id的有效命名方式。這些詞匯簡單并且能夠使人顧名思義,因此滿足了標識頁面元素以及相應的CSS樣式的需要。
有標記的相關信息都是用來描述文檔的結構而不是外觀。這樣的特點使得我們可以通過簡單的改變CSS的方式來對不同外觀格式下的內容(content)以及標記(markup)進行重用。當你理解這種方式時,很容易就可以發現采用頁面位置來為類以及id命名的方式在處理如音頻(audio)等外觀格式上顯得非常不合適。因此,應當根據在文檔中的使用目的而非出現位置來對類以及id進行結構化命名。
可以按照如下所示的結構化方式來對類以及id名稱命名:
例如:branding
main-nav
subnav
main-content
sidebar
這些名字同直觀命名方式一樣非常易懂,但他們描述了頁面元素的作用而非位置。這使得代碼更加符合使用純粹的結構化標記(structural markup)的初衷,即開發人員可以在不改變標記的情況下對各種各樣媒體下的顯示格式進行處理。
即使你不打算在其他的媒體上對Web頁面進行格式修改,使用結構化命名方式還可以幫助你在日后的站點升級或重新設計中更為輕松。例如,結構化命名避免了當一個div同id right-column移動到頁面左邊后所帶來的混亂。對div sidebar的采用這樣的命名方式就顯得更加適當,因為無論它出現在頁面的哪一邊,這個名字仍然對開發人員來說直觀易懂。
慣例
Andy Clarke分析了40份由推崇標準化Web設計理念的開發人員所設計的Web站點的源代碼。盡管類以及id名稱很不統一,但是還是發現了一些頻繁出現的常用名稱。這里給出了最常用類/id名稱的示例列表:
例如:header
content
nav
sidebar
footer
#p#
數據庫中的命名規則
數據庫涉及字符規則
采用26個英文字母(區分大小寫)和0 -9這十個自然數,加上下劃線_組成,共63個字符。不能出現其他字符(注釋除外)。
據庫對象命名規則
數據庫對象包括表、視圖(查詢)、存儲過程(參數查詢)、函數、約束。對象名字由前綴和實際名字組成,長度不超過30。前綴:使用小寫字母。
例如:
表 | tb |
視圖 | vi |
存儲過程 | sp |
函數 | fn |
實際名字
實際名字盡量描述實體的內容,由單詞或單詞組合,每個單詞的首字母大寫,其他字母小寫,不以數字和_開頭。
例如:
表 | User_Info |
視圖 | UserList |
存儲過程 | UserDelete |
因此,合法的對象名字類似如下。
表 | tbUser_Info、tbMessage_Detail |
視圖 | vi_MessageList |
存儲過程 | sp_MessageAdd |
數據庫表命名規則
字段由前綴和實際名字組成。實際名字中首單詞一個系統盡量采取同一單詞。
前綴:使用小寫字母tb,表示表。
例如:
tbMember
tbMember_Info
tbForum_Board
tbForum_Thread1
字段命名規則
數字、字符、日期/時間、lob(大對象)、雜項,字段由表的簡稱、下劃線,實際名字加后綴組成。
后綴:使用小寫字母,代表該字段的屬性。
例如:
User_Idint
User_Namestr
User_RegDatedtm
視圖命名規則
字段由前綴和實際名字組成,中間用下劃線連接。
前綴:使用小寫字母vi,表示視圖。
例如:
vi_User
vi_UserInfo
存儲過程命名規則
字段由前綴和實際名字組成,中間用下劃線連接。
前綴:使用小寫字母sp,表示存儲過程。
例如:sp_User
數據庫設計文檔規則
所有數據庫設計要寫成文檔,文檔以模塊化形式表達。大致格式如下:
'-------------------------------------------
' 表名: tbUser_Info
' 建立人:UAM_Richard
' 日期: 2004-12-17
' 版本: 1.0
' 描述: 保存用戶資料
' 具體內容:
' UserId int,自動增量 用戶代碼
' UserName char(12) 用戶名字
' ......
'--------------------------------------------
sql語句規則
所有sql關鍵詞全部大寫,比如SELECT,UPDATE,FROM,ORDER,BY等。
后記:
良好的命名對于軟件開發起著至關重要的作用,能夠對資源進行合理的命名,可以達到事半功倍的效果。無論是哪種命名規則,無論是對哪種資源進行命名,其核心思想都是“用最少的字母進行最全面的描述”。正如本文開始時強調的,“唯一性+描述性”是命名的靈魂。所以,在您對程序的各個方面進行命名的時候,不妨去參照著這兩大原則去進行,切記不可圖一時之快,卻為日后的修改或維護帶來巨大的困難。
原文鏈接:http://www.blueidea.com/articleimg/magazine/noahweb/4/
【編輯推薦】