Asp.Net编码规范
生活随笔
收集整理的這篇文章主要介紹了
Asp.Net编码规范
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代碼編寫規范如下: (c#.net與asp.net)
1 目的
? ?一.為了統一公司軟件開發設計過程的編程規范
? ?二.使網站開發人員能很方便的理解每個目錄,變量,控件,類,方法的意義
? ?三.為了保證編寫出的程序都符合相同的規范,保證一致性、統一性而建立的程序編碼規范。
? ?四.編碼規范和約定必須能明顯改善代碼可讀性,并有助于代碼管理、分類范圍適用于企業所有基于.NET平臺的軟件開發工作
2 范圍
? ? ?本規范適用于開發組全體人員,作用于軟件項目開發的代碼編寫階段和后期維護階段。
1.1ASP.Net編碼規范通述
ASP.Net編碼分為兩大部分,一部分為靜態文件編碼,一部分為包含服務器端腳本的動態文件編碼。靜態文件編碼分Script編碼和HTML編碼兩部分。
服務器端編碼則分為服務器腳本、客戶端腳本、HTML腳本三部分。
編碼規范采用如下約定:
所有客戶端腳本一律使用JavaScript
所有服務器端腳本一律使用C#
靜態頁面輸出一律使用HTML腳本
本規范不適用于由服務器端腳本所產生的客戶端腳本代碼。
1.2靜態文件編碼規范
靜態文件腳本部分采用JavaScript編寫。輸出部分采用HTML標記語言。
1.2.1HTML標記語言編碼規范1.2.1.1標記的換行規范
* 一個標記必須占用一行。不得出現兩個標記在同一行的情況(同一標記的關閉標記除外),如:
<tr><td>text</td></tr>
而必須寫成:
<tr>
<td>text</td>
<tr>
1.2.1.2標記的關閉規范
* 靜態文件內容必須包含在<body></body>標記中間
* <body>標記必須包含在<html></html>標記中間
* 對于需要關閉的標記,如:
<html><title><body><table><tr><td><p><textarea><select><font><option><div><span>
必須同其關閉標記同時出現。如
<body>…<p>…<font>….</font>….</p>…..</body>
* 不得出現交叉包含的語句,如:
<p><font>…..</p></font>
1.2.1.3標記的屬性賦值規范
對于接受屬性的標記,屬性值必須使用雙引號或者單引號包圍。如:
<body bgcolor=”red”>
<font size=’7’>
注:在頁面上如果是HTML標簽,盡量只能出現id,class屬性。屬性越少越好。
1.2.1.4標記的縮進規范
* 最高一級的父標記采用左對齊頂格方式書寫。
* 下一級標記采用左對齊向右縮進一個Tab的方式書寫
在下一級依此類推,分別左對齊相對于父標記向右縮進一個Tab的方式書寫
* 同一級標記的首字符上下必須對齊。
1.2.2客戶端JavaScript規范1.2.2.1變量命名規范
* 常量以及全局變量名必須全部使用大寫字母
* 變量名首字母必須小寫。
* 變量名必須使用其類型的所寫字符串開始。各種類型的所寫字符串如下:
* 整型變量:int
* 長整型變量:lng
* 浮點型變量:flt
* 雙精度變量:dbl
* 對象引用變量:obj
* 字符串變量:str
* Date類型變量:dtm
* 變量名必須采用有意義的單詞命名,如:
strUserName、lngArrayIndex
* 變量名除首字母小寫外,其他單詞首字符必須大寫
* 如果變量名過長可以使用單詞縮寫,除了被廣泛了解的單詞縮寫以外,所有使用單詞所寫的變量名必須在定義時給出注釋,如:
var strAdName //用于表示Administrator帳戶的名稱
var strAdminName //不用給出注釋,Admin被廣泛了解
1.2.2.2變量使用規范
* 變量使用前必須定義。沒有定義的變量禁止使用
* 變量的使用盡量縮小到小的作用域。如循環使用
? for(var I=0;I<12;I++){
}
而不是:
var I;
for(I=0;I<12,I++){
}
1.2.2.3對象命名規范
各種頁面對象如text輸入框、按鈕、下拉選擇框在命名時必須使用以下對應前綴:
* text輸入框:txt
* button按鈕:btn
* select下拉選擇框:sel
* option項:opt
* form表單:frm
* frame框架:fra
* hidden表單項:hdn
* div標記:div
* span標記:span
* 對話框對象:dlg
* 窗口對象:win
1.2.3函數以及子過程命名規范
* 函數命名必須使用動詞+名詞對的方式,并且能夠體現函數的功能
* 函數命名的動詞前綴必須是同函數功能相關的完整動詞
* 函數命名第一個單詞的首字母小寫,后面每一個單詞的首字母大寫
1.3動態文件編碼規范1.3.1HTML書寫規范命名(控件)
* TextBox輸入框:txt
* Button按鈕:btn
* DropDownList下拉選擇框:ddl
* Label文本:lbl
* CheckBox復選框:cbx
* RadioButton單選按鈕:rbtn
* hidden表單項:hdn
注:HTML書寫規范必須符合靜態文件HTML標記書寫規范,服務器控件命名一般以控件單純的首字母的簡寫形式作為前綴。
1.3.2客戶端腳本規范
書寫規范必須符合靜態文件HTML標記書寫規范,服務器控件命名一般以控件單純的首字母的簡寫形式作為前綴。
1.3.2客戶端腳本規范
動態文件客戶端腳本一律采用JavaScript書寫,并必須符合靜態文件編碼規范中有關JavaScript編碼規范的規定。
1.3.3服務器端腳本書寫規范
3 注釋規范
3.1 概述
a) 注釋要求英文及英文的標點符號。
b) 注釋中,應標明對象的完整的名稱及其用途,但應避免對代碼過于詳細的描述。
c) 每行注釋的最大長度為100個字符。
d) 將注釋與注釋分隔符用一個空格分開。
e) 不允許給注釋加外框。
f) 編碼的同時書寫注釋。
g) 重要變量必須有注釋。
h) 變量注釋和變量在同一行,所有注釋必須對齊,與變量分開至少四個“空格”鍵。
如:int m_iLevel,m_iCount; // m_iLevel ....tree level
// m_iCount ....count of tree items
string m_strSql; //SQL
i) 典型算法必須有注釋。
j) 在循環和邏輯分支地方的上行必須就近書寫注釋。
k) 程序段或語句的注釋在程序段或語句的上一行
l) 在代碼交付之前,必須刪掉臨時的或無關的注釋。
m) 為便于閱讀代碼,每行代碼的長度應少于100個字符。
3.2 自建代碼文件注釋
對于自己創建的代碼文件(如函數、腳本),在文件開頭,一般編寫如下注釋:
3.3 模塊(類)注釋
模塊開始必須以以下形式書寫模塊注釋:
///<summary>
///Module ID:<模塊編號,可以引用系統設計中的模塊編號>
///Depiction:<對此類的描述,可以引用系統設計中的描述>
///Author:作者中文名
///Create Date:<模塊創建日期,格式:YYYY-MM-DD>
///</summary>
如果模塊只進行部分少量代碼的修改時,則每次修改須添加以下注釋:
///Rewriter Rewrite Date:<修改日期:格式YYYY-MM-DD> Start1:
///End1:
將原代碼內容注釋掉,然后添加新代碼使用以下注釋:
///Added by Add date:<添加日期,格式:YYYY-MM-DD> Start2:
///End2:
如果模塊輸入輸出參數或功能結構有較大修改,則每次修改必須添加以下注釋:
///<summary>
///Log ID:<Log編號,從1開始一次增加>
///depiction:<對此修改的描述>
///Writer:修改者中文名
///Rewrite Date:<模塊修改日期,格式:YYYY-MM-DD>
///</summary>
3.4 類屬性注釋
在類的屬性必須以以下格式編寫屬性注釋:
/// <summary>
/// <Properties depiction>
/// </summary>
3.5 方法注釋
在類的方法聲明前必須以以下格式編寫注釋
/// <summary>
/// depiction:<對該方法的說明>
/// </summary>
/// <param name="<參數名稱>"><參數說明></param>
/// <returns>
///<對方法返回值的說明,該說明必須明確說明返回的值代表什么含義>
/// </returns>
///Writer:作者中文名
///Create Date:<方法創建日期,格式:YYYY-MM-DD>
3.6 代碼間注釋
代碼間注釋分為單行注釋和多行注釋:
//<單行注釋>
代碼中遇到語句塊時必須添加注釋(if,for,foreach,……),添加的注釋必須能夠說明此語句塊的作用和實現手段(所用算法等等)。
4 命名總體規則
? 名字應該能夠標識事物的特性。
? 名字一律使用英文單詞,而不能為拼音。
? 名字盡量不使用縮寫,除非它是眾所周知的。
? 名字可以有兩個或三個單詞組成,但不應多于三個,控制在3至30個字母以內。
? 在名字中,多個單詞用大寫第一個字母(其它字母小寫)來分隔。例如:IsSuperUser。
? 名字盡量使用前綴而不是后綴。
? 名字中的單詞盡量使用名詞,如有動詞,也盡量放在后面。例如:FunctionUserDelete(而不是FunctionDeleteUser)。
5 命名規范
5.1 變量(Variable)命名
a) 程序文件(*.cs)中的變量命名
程序中變量名稱 = 變量的前綴 +代表變量含意的英文單詞或單詞縮寫。
? 類模塊級的變量請用“m_” +數據類型縮寫作為前綴(其中,m 為“memory”縮寫,數據類型縮寫見附件中的《數據類型縮寫表》)。
public class hello
{
private string m_strName;
private DateTime m_dtDate;
}
? 類的屬性所對應的變量,采用屬性名前加“m_”+ 類型縮寫前綴的形式
public class hello
{
private string m_strName;
public string Name
{
get
{
return m_strName;
}
}
}
過程級的變量使用類型縮寫前綴
public class hello
{
void say()
{
string strSayWord;
}
}
? 過程的參數使用“p_”+ 類型縮寫作為前綴(其中,p 為“parameter”縮寫)
public class hello
{
void say(string p_strSayWord)
{
}
}
補充說明:
針對異常捕獲過程中的Exception變量命名,在沒有沖突的情況下,統一命名為exp;
如果有沖突的情況下,可以用“exp”+ 標志名稱,如:expSql。
Try
{
//your code
try
{
//code
}
catch(Exception exp)
{
//your code
}
}
catch(Exception expSql)
{
//your code
}
補充:如果捕獲異常不需要作任何處理,則不需要定義Exception實例。
例:
try
{
//your code
}
catch( Exception exp)
{
}
? 鑒于大多數名稱都是通過連接若干單詞構造的,請使用大小寫混合的格式以簡化它們的閱讀。每個單詞的第一個字母都是大寫.
? 即使對于可能僅出現在幾個代碼行中的生存期很短的變量,仍然使用有意義的名稱。僅對于短循環索引使用單字母變量名,如 i 或 j。
? 在變量名中使用互補對,如 min/max、begin/end 和 open/close。
? 不要使用原義數字或原義字符串,如 For (i = 1;i <= 7;i++)。而是使用命名常數,如 For (i = 1;i <= NUM_DAYS_IN_WEEK;i++) 以便于維護和理解。
b) 控件命名
控件命名 = 控件名稱前二到三個字母 + 名稱,如Labl控件(labUserName)
5.2 常量命名
常量名也應當有一定的意義,格式為 NOUN 或 NOUN_VERB。常量名均為大寫,字之間用下劃線分隔。
例:
private const bool WEB_ENABLEPAGECACHE_DEFAULT = true;
private const int WEB_PAGECACHEEXPIRESINSECONDS_DEFAULT = 3600;
private const bool WEB_ENABLESSL_DEFAULT = false;
注:
變量名和常量名最多可以包含 255 個字符,但是,超過 25 到 30 個字符的名稱比較笨拙。此外,要想取一個有實際意義的名稱,清楚地表達變量或常量的用途,25 或 30 個字符應當足夠了。
5.3 類(Class)命名
a) 名字應該能夠標識事物的特性。
b) 名字盡量不使用縮寫,除非它是眾所周知的。
c) 名字可以有兩個或三個單詞組成,但通常不應多于三個。
d) 在名字中,所有單詞第一個字母大寫。例如 IsSuperUser,包含ID的,ID全部大寫,如CustomerID。
e) 使用名詞或名詞短語命名類。
f) 少用縮寫。
g) 不要使用下劃線字符 (_)。
例: public class FileStream
public class Button
public class String
5.4 接口(Interface)命名
和類命名規范相同,唯一區別是 接口在名字前加上“I”前綴
例:
interface IDBCommand;
interface IButton;
5.5 方法(Method)命名
和類命名規范相同。
5.6 命名空間(NameSpace)命名
和類命名規范相同。
6 編碼規則
6.1 錯誤檢查規則
a) 編程中要考慮函數的各種執行情況,盡可能處理所有流程情況。
b) 檢查所有的系統調用的錯誤信息,除非要忽略錯誤。
c) 將函數分兩類:一類為與屏幕的顯示無關,另一類與屏幕的顯示有關。對于與屏幕顯示無關的函數,函數通過返回值來報告錯誤。對于與屏幕顯示有關的函數,函數要負責向用戶發出警告,并進行錯誤處理。
d) 錯誤處理代碼一般放在函數末尾。
e) 對于通用的錯誤處理,可建立通用的錯誤處理函數,處理常見的通用的錯誤。
6.2 大括號規則
將大括號放置在關鍵詞下方的同列處,例如:
if ($condition) while ($condition)
{ {
... ...
} }
6.3 縮進規則
使用一個“Tab”為每層次縮進。例如:
function func()
{
if (something bad)
{
if (another thing bad)
{
while (more input)
{
}
}
}
}
6.4 小括號規則
a) 不要把小括號和關鍵詞(if 、while等)緊貼在一起,要用空格隔開它們。
b) 不要把小括號和函數名緊貼在一起。
c) 除非必要,不要在Return返回語句中使用小括號。因為關鍵字不是函數,如果小括號緊貼著函數名和關鍵字,二者很容易被看成是一體的。
6.5 If Then Else規則
如果你有用到else if 語句的話,通常最好有一個else塊以用于處理未處理到的其他情況。可以的話放一個記錄信息注釋在else處,即使在else沒有任何的動作。其格式為:
if (條件1) // 注釋
{
}
else if (條件2) // 注釋
{
}
else // 注釋
{
}
注:if 和循環的嵌套最多允許4層
6.6 比較規則
總是將恒量放在等號/不等號的左邊。一個原因是假如你在等式中漏了一個等號,語法檢查器會為你報錯。第二個原因是你能立刻找到數值而不是在你的表達式的末端找到它。例如:
if ( 6 == $errorNum ) ...
6.7 Case規則
default case總應該存在,如果不允許到達,則應該保證:若到達了就會觸發一個錯誤。Case的選擇條件最好使用int或string類型。
6.8 對齊規則
變量的申明和初始化都應對齊。例如:
int m_iCount;
int i,j;
float m_fIncome,m_fPay;
m_iCount = 0;
i = 1;
m_fIncome = 0.3;
6.9 單語句規則
除非這些語句有很密切的聯系,否則每行只寫一個語句。
6.10 單一功能規則
原則上,一個程序單元(函數、例程、方法)只完成一項功能。
6.11 簡單功能規則
原則上,一個程序單元的代碼應該限制在一頁內(25~30行)。
6.12 明確條件規則
不要采用缺省值測試非零值。例如:使用“if ( 0 != f( ) )”而不用“if ( f( ) )”。
6.13 選用FALSE規則
大部分函數在錯誤時返回FALSE、0或NO之類的值,但在正確時返回值就不定了(不能用一個固定的TRUE、1或YES來代表),因此檢測一個布爾值時應該用 FALSE、0、NO之類的不等式來代替。例如:使用“if ( FALSE != f( ) )” 而不用“if (TRUE == f( ) )”。
6.14 獨立賦值規則
嵌入式賦值不利于理解程序,同時可能回造成意想不到的副作用,應盡量編寫獨立的賦值語句。例如:使用“a = b + c ; e = a + d;”而不用“e = ( a = b + c ) + d ”。
6.15 定義常量規則
對于代碼中引用的常量(尤其是數字),應該define成一個大寫的名字,在代碼中引用名字而不直接引用值。
6.16 模塊化規則
某一功能,如果重復實現一遍以上,即應考慮模塊化,將它寫成通用函數。并向小組成員發布。同時要盡可能利用其它人的現成模塊。
6.17 交流規則
共享別人的工作成果,向別人提供自己的工作成果。
在具體任務開發中,如果有其它的編碼規則,則在相應的軟件開發計劃中予以明確定義。
7 編程準則
7.1 變量使用
a) 不允許隨意定義全局變量。
b) 一個變量只能有一個用途;變量的用途必須和變量的名稱保持一致。
c) 所有變量都必須在類和函數最前面定義,并分類排列。
7.2 數據庫操作
a) 查找數據庫表或視圖時,只能取出確實需要的那些字段。
b) 使用無關聯子查詢,而不要使用關聯子查詢。
c) 清楚明白地使用列名,而不能使用列的序號。
d) 用事務保證數據的完整性。
7.3 對象使用
a) 盡可能晚地創建對象,并且盡可能早地釋放它。
7.4 模塊設計原則
a) 不允許隨意定義公用的函數和類。
b) 函數功能單一,不允許一個函數實現兩個及兩個以上的功能。
c) 不能在函數內部使用全局變量,如要使用全局變量,應轉化為局部變量。
d) 函數與函數之間只允許存在包含關系,而不允許存在交叉關系。即兩者之間只存在單方向的調用與被調用,不存在雙向的調用與被調用。
7.5 結構化要求
a) 禁止出現兩條等價的支路。
例如:if (a == 2)
else if (a== 3)
//
else if (a == 2)
//
else
//
b) 避免使用GOTO語句
c) 用 IF 語句來強調只執行兩組語句中的一組。禁止 ELSE GOTO 和 ELSE RETURN。
d) 用 CASE 實現多路分支
e) 避免從循環引出多個出口。
f) 函數只有一個出口。
g) 不使用條件賦值語句。
h) 避免不必要的分支。
i) 不要輕易用條件分支去替換邏輯表達式
7.6 函數返回值原則
1) 函數返回值
避免使用結構體等復雜類型
使用bool類型:該函數只需要獲得成功或者失敗的返回信息時候
使用int 類型:錯誤代碼用負數表示,成功返回0
8 代碼包規范
本項目中,每個任務在完成一個穩定的版本后,都應打包并且歸檔。
8.1 代碼包的版本號
項目中,代碼包的版本號由圓點隔開的兩個數字組成,第一個數字表示發行號,第二個數字表示該版的修改號。具體用法如下:
1) 當代碼包初版時,版本號為 V1.00;
2) 當代碼包被局部修改或bug修正時,發行號不變,修改號第二個數字增1。例如,對初版代碼包作了第一次修訂,則版本號為 V1.01;
3) 當代碼包在原有的基礎上增加部分功能,發行號不變,修改號第一個數字增1,例如,對V1.12版的基礎上增加部分功能,則新版本號為 V1.20;
4) 當代碼包有重要修改或局部修訂累積較多導致代碼包發生全局變化時,發行號增1。例如,在 V1.15 版的基礎上作了一次全面修改,則新版本號為 V2.00。
8.2 代碼包的標識
本項目所產生的代碼包都有唯一、特定的編碼,其構成如下:
S-項目標識-代碼包類型-版本號/序號
其中:
1) S:本項目的標識,表明本項目是“XXXX”。
2) 項目標識:簡要標識本項目,此標識適用于整個項目的文檔。
3) 代碼包類型:取自以下表的兩位字母編碼。
4) 版本號:本代碼包的版本號。
5) 序號:四位數字編碼,指明該代碼包在項目代碼庫的總序號。
例如:
一個Windows下RAR源碼的壓縮代碼包命名為: S-XXXX-WS-V1.02/0001
項目的代碼包分類表
類 型 編 碼 注 釋
RAR包
(web) 源碼文件 WS 源代碼文件包
編譯文件 WB 編譯文件包
安裝文件 WI 安裝文件包
源碼代碼 + 安裝文件 WA 源代碼和安裝文件包
項目中所有代碼包的標識清單將在《項目開發計劃》中予以具體定義。
9 代碼的控制
9.1 代碼庫/目錄的建立
項目負責人在VSS中建立項目的文檔庫目錄,即為“Software”目錄,以便快速查詢。
9.2 代碼歸檔
所有代碼在完成一個穩定的版本后,項目負責人都應打包后,存放于VSS中該目的“Software”目錄下,并且依據代碼包的命名規范為代碼包分配一個唯一名稱。
10 輸入控制校驗規則
10.1 登陸控制
用戶登陸ID和登陸密碼,要限定輸入長度范圍,必須檢查輸入合法性。
10.2 數據錄入控制
a) TextBox輸入
1、 要保持用戶輸入和數據庫接收的長度一致
2、 必須進行輸入合法性校驗
如:E_mail格式 XXX@XXX.XXX...
電話格式 020-12345678 (020)12345678
郵政編碼是六位
b) 除CheckBox、RadioButton外,禁止在DataGrid內嵌入其他編輯控件,用以添加編輯數據
11. 數據庫命名規范:
SqlServer命名規范
使用本系統遵循以下命名規范:
1、表命名:用一個或三個以下英文單詞組成,單詞首字母大寫,如:DepartmentUsers;
2、表主鍵名稱為:表名+ID,如Document表的主鍵名為:DocumentID
3、存儲過程命名:表名+方法,如:p_my_NewsAdd,p_my_NewsUpdate;
4、視圖命名:View_表名,如:ViewNews;
5、Status為表中狀態的列名,默認值為0,在表中刪除操作將會改變Status的值而不真實刪除該記錄;
6、Checkintime為記錄添加時間列,默認值為系統時間;
7、表、存儲過程、視圖等對象的所有都為dbo,不要使用數據庫用戶名,這樣會影響數據庫用戶的更改。
附件1:數據類型縮寫表
數據類型 縮寫
string str
int i
char chr
sbyte sb
byte bt
uint ui
long l
ulong ul
float f
double d
bool b
decimal dec
附注:數據庫服務器命名規范,控件名縮寫+控件作用單詞的全稱,如:btnNext, txtPassword(密碼文本框),txtRPassword(密碼確認文本框),單詞的第一個字母必須大寫如果有多個單詞,則為控件縮寫+控件作用的第一個單詞+第二個單詞的全稱,每個單詞名的第一個字母必須大寫
附件2:服務器控件名縮寫表
a、web控件
web控件名 縮寫
AdRotator art
Button btn
Calendar cd
CheckBox chk
CheckBoxList chkl
Comparidator cpv
CustomValidator ctv
DataGrid dg
DataList dl
DropDownList ddl
HyperLink hl
Image img
ImageButton Ibtn
Label lab
LinkButton lbtn
ListBox lst
Panel pl
PlaceHolder ph
RadioButton rb
RadioButtonList rbl
Rangidator rv
RegularExpressionValidator rev
Repeater rp
RequiredFieldValidator rfv
Table tb
TableCell tc
TableRow tr
TextBox txt
ValidationSummary vs
XML XML
b、html控件
html控件名 縮寫
HtmlAnchor hah
HtmlButton hbtn
HtmlForm hform
HtmlGenericControl hgc
HtmlImage himg
HtmlInputButton(按鈕) htxt
HtmlInputButton(重置) hrbtn
HtmlInputButton(提交) hcbtn
HtmlInputCheckBox hick
HtmlInputFile hifile
HtmlInputHidden hihidden
HtmlInputImage hiimg
HtmlInputRadioButton hirb
HtmlInputText(密碼) hpwd
HtmlInputText(文本) hitxt
HtmlSelect hslt
HtmlTable htab
HtmlTableCell htc
HtmlTableRow htr
HtmlTextArea htxta
c.ADO.NET控件命名規范
類型 前綴 示例
Connection con conNorthwind
Command cmd cmdReturnProducts
Parameter parm parmProductID
DataAdapter dad dadProducts
DataReader dtr dtrProducts
DataSet dst dstNorthWind
DataTable dtbl dtblProduct
DataRow drow drowRow98
DataColumn dcol dcolProductID
DataRelation drel drelMasterDetail
DataView dvw dvwFilteredProducts
1.3.3.1字符集設定原則
* 所有將對客戶端產生中文輸出的ASP程序文件,必須在輸出前設定Charset為”GB2312”.如:Response.Charset = “GB2312”
1.3.3.2Request、Session、Application使用規范
* 所有需要放入Session、Application中的對象,必須采用有意義的英文名字。除了被廣泛了解的單詞縮寫以外,不得采用單詞縮寫。如:
Session(“cp”) = strCurrentUserIP ‘不允許
Session(“CurrentUserIP”) = strCurrentUserIP
Session(“Pwd”) = strPwd ‘允許,Pwd被廣泛了解為密碼
* 所有需要在代碼內用到的Request、Session、Application中的元素,必須在代碼頭部賦值給代碼內聲明的變量。
* 如果獲得Form中提交的內容,必須使用Request.Form(“itemName”).
* 如果獲得QueryString中提交的內容,必須使用Request.QueryString(“itemName”)
* 不得在代碼中出現Request(“”)這樣的引用方式
『三層規范』
? 1.數據模型層(實體層)
? ? ? ? ?命名規范:項目名稱+Models
? ? ? ? ?類文件命名:對應數據庫表名(屬性:對應數據庫表字段)
? 2.數據訪問層
? ? ? ? 命名規范:項目名稱+DAL
? ? ? ? 類文件命名:對應數據庫表名+Service(一般定義為靜態類)
? ? ? ? 方法返回類型:盡量返回自定義的類型。(比如:實體對象,實體集合等。)
? 3.業務邏輯層
? ? ? ?命名規范:項目名稱+BLL
? ? ? ?類文件命名:對應數據庫表名+Manager(一般定義為靜態類)
? 4.頁面
? ? ? ?命名規范:對應數據庫表名(或者:動詞+數據庫表名)
? ? ? ?頁面的存放位置:一般放在Views頁面文件夾以(數據庫表名)命名的文件夾中
? ? ? ?頁面調用:一般調用BLL層的類文件和自定義幫助類文件。(目前由于項目的比較小可以直接調用DAL層的類文件)
『數據庫編碼規范』
? 要采用大小寫混合,提高名字的可讀性。為區分一個標識符中的多個單詞,把標識符中的每個單詞的首字母大寫。不采用下劃線作分隔字符的寫法。有兩種適合的書寫方法,適應于不同類型的標識符:
PasalCasing:標識符的第一個單詞的字母大寫;
camelCasing:標識符的第一個單詞的字母小寫。
1 目的
? ?一.為了統一公司軟件開發設計過程的編程規范
? ?二.使網站開發人員能很方便的理解每個目錄,變量,控件,類,方法的意義
? ?三.為了保證編寫出的程序都符合相同的規范,保證一致性、統一性而建立的程序編碼規范。
? ?四.編碼規范和約定必須能明顯改善代碼可讀性,并有助于代碼管理、分類范圍適用于企業所有基于.NET平臺的軟件開發工作
2 范圍
? ? ?本規范適用于開發組全體人員,作用于軟件項目開發的代碼編寫階段和后期維護階段。
1.1ASP.Net編碼規范通述
ASP.Net編碼分為兩大部分,一部分為靜態文件編碼,一部分為包含服務器端腳本的動態文件編碼。靜態文件編碼分Script編碼和HTML編碼兩部分。
服務器端編碼則分為服務器腳本、客戶端腳本、HTML腳本三部分。
編碼規范采用如下約定:
所有客戶端腳本一律使用JavaScript
所有服務器端腳本一律使用C#
靜態頁面輸出一律使用HTML腳本
本規范不適用于由服務器端腳本所產生的客戶端腳本代碼。
1.2靜態文件編碼規范
靜態文件腳本部分采用JavaScript編寫。輸出部分采用HTML標記語言。
1.2.1HTML標記語言編碼規范1.2.1.1標記的換行規范
* 一個標記必須占用一行。不得出現兩個標記在同一行的情況(同一標記的關閉標記除外),如:
<tr><td>text</td></tr>
而必須寫成:
<tr>
<td>text</td>
<tr>
1.2.1.2標記的關閉規范
* 靜態文件內容必須包含在<body></body>標記中間
* <body>標記必須包含在<html></html>標記中間
* 對于需要關閉的標記,如:
<html><title><body><table><tr><td><p><textarea><select><font><option><div><span>
必須同其關閉標記同時出現。如
<body>…<p>…<font>….</font>….</p>…..</body>
* 不得出現交叉包含的語句,如:
<p><font>…..</p></font>
1.2.1.3標記的屬性賦值規范
對于接受屬性的標記,屬性值必須使用雙引號或者單引號包圍。如:
<body bgcolor=”red”>
<font size=’7’>
注:在頁面上如果是HTML標簽,盡量只能出現id,class屬性。屬性越少越好。
1.2.1.4標記的縮進規范
* 最高一級的父標記采用左對齊頂格方式書寫。
* 下一級標記采用左對齊向右縮進一個Tab的方式書寫
在下一級依此類推,分別左對齊相對于父標記向右縮進一個Tab的方式書寫
* 同一級標記的首字符上下必須對齊。
1.2.2客戶端JavaScript規范1.2.2.1變量命名規范
* 常量以及全局變量名必須全部使用大寫字母
* 變量名首字母必須小寫。
* 變量名必須使用其類型的所寫字符串開始。各種類型的所寫字符串如下:
* 整型變量:int
* 長整型變量:lng
* 浮點型變量:flt
* 雙精度變量:dbl
* 對象引用變量:obj
* 字符串變量:str
* Date類型變量:dtm
* 變量名必須采用有意義的單詞命名,如:
strUserName、lngArrayIndex
* 變量名除首字母小寫外,其他單詞首字符必須大寫
* 如果變量名過長可以使用單詞縮寫,除了被廣泛了解的單詞縮寫以外,所有使用單詞所寫的變量名必須在定義時給出注釋,如:
var strAdName //用于表示Administrator帳戶的名稱
var strAdminName //不用給出注釋,Admin被廣泛了解
1.2.2.2變量使用規范
* 變量使用前必須定義。沒有定義的變量禁止使用
* 變量的使用盡量縮小到小的作用域。如循環使用
? for(var I=0;I<12;I++){
}
而不是:
var I;
for(I=0;I<12,I++){
}
1.2.2.3對象命名規范
各種頁面對象如text輸入框、按鈕、下拉選擇框在命名時必須使用以下對應前綴:
* text輸入框:txt
* button按鈕:btn
* select下拉選擇框:sel
* option項:opt
* form表單:frm
* frame框架:fra
* hidden表單項:hdn
* div標記:div
* span標記:span
* 對話框對象:dlg
* 窗口對象:win
1.2.3函數以及子過程命名規范
* 函數命名必須使用動詞+名詞對的方式,并且能夠體現函數的功能
* 函數命名的動詞前綴必須是同函數功能相關的完整動詞
* 函數命名第一個單詞的首字母小寫,后面每一個單詞的首字母大寫
1.3動態文件編碼規范1.3.1HTML書寫規范命名(控件)
* TextBox輸入框:txt
* Button按鈕:btn
* DropDownList下拉選擇框:ddl
* Label文本:lbl
* CheckBox復選框:cbx
* RadioButton單選按鈕:rbtn
* hidden表單項:hdn
注:HTML書寫規范必須符合靜態文件HTML標記書寫規范,服務器控件命名一般以控件單純的首字母的簡寫形式作為前綴。
1.3.2客戶端腳本規范
書寫規范必須符合靜態文件HTML標記書寫規范,服務器控件命名一般以控件單純的首字母的簡寫形式作為前綴。
1.3.2客戶端腳本規范
動態文件客戶端腳本一律采用JavaScript書寫,并必須符合靜態文件編碼規范中有關JavaScript編碼規范的規定。
1.3.3服務器端腳本書寫規范
3 注釋規范
3.1 概述
a) 注釋要求英文及英文的標點符號。
b) 注釋中,應標明對象的完整的名稱及其用途,但應避免對代碼過于詳細的描述。
c) 每行注釋的最大長度為100個字符。
d) 將注釋與注釋分隔符用一個空格分開。
e) 不允許給注釋加外框。
f) 編碼的同時書寫注釋。
g) 重要變量必須有注釋。
h) 變量注釋和變量在同一行,所有注釋必須對齊,與變量分開至少四個“空格”鍵。
如:int m_iLevel,m_iCount; // m_iLevel ....tree level
// m_iCount ....count of tree items
string m_strSql; //SQL
i) 典型算法必須有注釋。
j) 在循環和邏輯分支地方的上行必須就近書寫注釋。
k) 程序段或語句的注釋在程序段或語句的上一行
l) 在代碼交付之前,必須刪掉臨時的或無關的注釋。
m) 為便于閱讀代碼,每行代碼的長度應少于100個字符。
3.2 自建代碼文件注釋
對于自己創建的代碼文件(如函數、腳本),在文件開頭,一般編寫如下注釋:
3.3 模塊(類)注釋
模塊開始必須以以下形式書寫模塊注釋:
///<summary>
///Module ID:<模塊編號,可以引用系統設計中的模塊編號>
///Depiction:<對此類的描述,可以引用系統設計中的描述>
///Author:作者中文名
///Create Date:<模塊創建日期,格式:YYYY-MM-DD>
///</summary>
如果模塊只進行部分少量代碼的修改時,則每次修改須添加以下注釋:
///Rewriter Rewrite Date:<修改日期:格式YYYY-MM-DD> Start1:
///End1:
將原代碼內容注釋掉,然后添加新代碼使用以下注釋:
///Added by Add date:<添加日期,格式:YYYY-MM-DD> Start2:
///End2:
如果模塊輸入輸出參數或功能結構有較大修改,則每次修改必須添加以下注釋:
///<summary>
///Log ID:<Log編號,從1開始一次增加>
///depiction:<對此修改的描述>
///Writer:修改者中文名
///Rewrite Date:<模塊修改日期,格式:YYYY-MM-DD>
///</summary>
3.4 類屬性注釋
在類的屬性必須以以下格式編寫屬性注釋:
/// <summary>
/// <Properties depiction>
/// </summary>
3.5 方法注釋
在類的方法聲明前必須以以下格式編寫注釋
/// <summary>
/// depiction:<對該方法的說明>
/// </summary>
/// <param name="<參數名稱>"><參數說明></param>
/// <returns>
///<對方法返回值的說明,該說明必須明確說明返回的值代表什么含義>
/// </returns>
///Writer:作者中文名
///Create Date:<方法創建日期,格式:YYYY-MM-DD>
3.6 代碼間注釋
代碼間注釋分為單行注釋和多行注釋:
//<單行注釋>
代碼中遇到語句塊時必須添加注釋(if,for,foreach,……),添加的注釋必須能夠說明此語句塊的作用和實現手段(所用算法等等)。
4 命名總體規則
? 名字應該能夠標識事物的特性。
? 名字一律使用英文單詞,而不能為拼音。
? 名字盡量不使用縮寫,除非它是眾所周知的。
? 名字可以有兩個或三個單詞組成,但不應多于三個,控制在3至30個字母以內。
? 在名字中,多個單詞用大寫第一個字母(其它字母小寫)來分隔。例如:IsSuperUser。
? 名字盡量使用前綴而不是后綴。
? 名字中的單詞盡量使用名詞,如有動詞,也盡量放在后面。例如:FunctionUserDelete(而不是FunctionDeleteUser)。
5 命名規范
5.1 變量(Variable)命名
a) 程序文件(*.cs)中的變量命名
程序中變量名稱 = 變量的前綴 +代表變量含意的英文單詞或單詞縮寫。
? 類模塊級的變量請用“m_” +數據類型縮寫作為前綴(其中,m 為“memory”縮寫,數據類型縮寫見附件中的《數據類型縮寫表》)。
public class hello
{
private string m_strName;
private DateTime m_dtDate;
}
? 類的屬性所對應的變量,采用屬性名前加“m_”+ 類型縮寫前綴的形式
public class hello
{
private string m_strName;
public string Name
{
get
{
return m_strName;
}
}
}
過程級的變量使用類型縮寫前綴
public class hello
{
void say()
{
string strSayWord;
}
}
? 過程的參數使用“p_”+ 類型縮寫作為前綴(其中,p 為“parameter”縮寫)
public class hello
{
void say(string p_strSayWord)
{
}
}
補充說明:
針對異常捕獲過程中的Exception變量命名,在沒有沖突的情況下,統一命名為exp;
如果有沖突的情況下,可以用“exp”+ 標志名稱,如:expSql。
Try
{
//your code
try
{
//code
}
catch(Exception exp)
{
//your code
}
}
catch(Exception expSql)
{
//your code
}
補充:如果捕獲異常不需要作任何處理,則不需要定義Exception實例。
例:
try
{
//your code
}
catch( Exception exp)
{
}
? 鑒于大多數名稱都是通過連接若干單詞構造的,請使用大小寫混合的格式以簡化它們的閱讀。每個單詞的第一個字母都是大寫.
? 即使對于可能僅出現在幾個代碼行中的生存期很短的變量,仍然使用有意義的名稱。僅對于短循環索引使用單字母變量名,如 i 或 j。
? 在變量名中使用互補對,如 min/max、begin/end 和 open/close。
? 不要使用原義數字或原義字符串,如 For (i = 1;i <= 7;i++)。而是使用命名常數,如 For (i = 1;i <= NUM_DAYS_IN_WEEK;i++) 以便于維護和理解。
b) 控件命名
控件命名 = 控件名稱前二到三個字母 + 名稱,如Labl控件(labUserName)
5.2 常量命名
常量名也應當有一定的意義,格式為 NOUN 或 NOUN_VERB。常量名均為大寫,字之間用下劃線分隔。
例:
private const bool WEB_ENABLEPAGECACHE_DEFAULT = true;
private const int WEB_PAGECACHEEXPIRESINSECONDS_DEFAULT = 3600;
private const bool WEB_ENABLESSL_DEFAULT = false;
注:
變量名和常量名最多可以包含 255 個字符,但是,超過 25 到 30 個字符的名稱比較笨拙。此外,要想取一個有實際意義的名稱,清楚地表達變量或常量的用途,25 或 30 個字符應當足夠了。
5.3 類(Class)命名
a) 名字應該能夠標識事物的特性。
b) 名字盡量不使用縮寫,除非它是眾所周知的。
c) 名字可以有兩個或三個單詞組成,但通常不應多于三個。
d) 在名字中,所有單詞第一個字母大寫。例如 IsSuperUser,包含ID的,ID全部大寫,如CustomerID。
e) 使用名詞或名詞短語命名類。
f) 少用縮寫。
g) 不要使用下劃線字符 (_)。
例: public class FileStream
public class Button
public class String
5.4 接口(Interface)命名
和類命名規范相同,唯一區別是 接口在名字前加上“I”前綴
例:
interface IDBCommand;
interface IButton;
5.5 方法(Method)命名
和類命名規范相同。
5.6 命名空間(NameSpace)命名
和類命名規范相同。
6 編碼規則
6.1 錯誤檢查規則
a) 編程中要考慮函數的各種執行情況,盡可能處理所有流程情況。
b) 檢查所有的系統調用的錯誤信息,除非要忽略錯誤。
c) 將函數分兩類:一類為與屏幕的顯示無關,另一類與屏幕的顯示有關。對于與屏幕顯示無關的函數,函數通過返回值來報告錯誤。對于與屏幕顯示有關的函數,函數要負責向用戶發出警告,并進行錯誤處理。
d) 錯誤處理代碼一般放在函數末尾。
e) 對于通用的錯誤處理,可建立通用的錯誤處理函數,處理常見的通用的錯誤。
6.2 大括號規則
將大括號放置在關鍵詞下方的同列處,例如:
if ($condition) while ($condition)
{ {
... ...
} }
6.3 縮進規則
使用一個“Tab”為每層次縮進。例如:
function func()
{
if (something bad)
{
if (another thing bad)
{
while (more input)
{
}
}
}
}
6.4 小括號規則
a) 不要把小括號和關鍵詞(if 、while等)緊貼在一起,要用空格隔開它們。
b) 不要把小括號和函數名緊貼在一起。
c) 除非必要,不要在Return返回語句中使用小括號。因為關鍵字不是函數,如果小括號緊貼著函數名和關鍵字,二者很容易被看成是一體的。
6.5 If Then Else規則
如果你有用到else if 語句的話,通常最好有一個else塊以用于處理未處理到的其他情況。可以的話放一個記錄信息注釋在else處,即使在else沒有任何的動作。其格式為:
if (條件1) // 注釋
{
}
else if (條件2) // 注釋
{
}
else // 注釋
{
}
注:if 和循環的嵌套最多允許4層
6.6 比較規則
總是將恒量放在等號/不等號的左邊。一個原因是假如你在等式中漏了一個等號,語法檢查器會為你報錯。第二個原因是你能立刻找到數值而不是在你的表達式的末端找到它。例如:
if ( 6 == $errorNum ) ...
6.7 Case規則
default case總應該存在,如果不允許到達,則應該保證:若到達了就會觸發一個錯誤。Case的選擇條件最好使用int或string類型。
6.8 對齊規則
變量的申明和初始化都應對齊。例如:
int m_iCount;
int i,j;
float m_fIncome,m_fPay;
m_iCount = 0;
i = 1;
m_fIncome = 0.3;
6.9 單語句規則
除非這些語句有很密切的聯系,否則每行只寫一個語句。
6.10 單一功能規則
原則上,一個程序單元(函數、例程、方法)只完成一項功能。
6.11 簡單功能規則
原則上,一個程序單元的代碼應該限制在一頁內(25~30行)。
6.12 明確條件規則
不要采用缺省值測試非零值。例如:使用“if ( 0 != f( ) )”而不用“if ( f( ) )”。
6.13 選用FALSE規則
大部分函數在錯誤時返回FALSE、0或NO之類的值,但在正確時返回值就不定了(不能用一個固定的TRUE、1或YES來代表),因此檢測一個布爾值時應該用 FALSE、0、NO之類的不等式來代替。例如:使用“if ( FALSE != f( ) )” 而不用“if (TRUE == f( ) )”。
6.14 獨立賦值規則
嵌入式賦值不利于理解程序,同時可能回造成意想不到的副作用,應盡量編寫獨立的賦值語句。例如:使用“a = b + c ; e = a + d;”而不用“e = ( a = b + c ) + d ”。
6.15 定義常量規則
對于代碼中引用的常量(尤其是數字),應該define成一個大寫的名字,在代碼中引用名字而不直接引用值。
6.16 模塊化規則
某一功能,如果重復實現一遍以上,即應考慮模塊化,將它寫成通用函數。并向小組成員發布。同時要盡可能利用其它人的現成模塊。
6.17 交流規則
共享別人的工作成果,向別人提供自己的工作成果。
在具體任務開發中,如果有其它的編碼規則,則在相應的軟件開發計劃中予以明確定義。
7 編程準則
7.1 變量使用
a) 不允許隨意定義全局變量。
b) 一個變量只能有一個用途;變量的用途必須和變量的名稱保持一致。
c) 所有變量都必須在類和函數最前面定義,并分類排列。
7.2 數據庫操作
a) 查找數據庫表或視圖時,只能取出確實需要的那些字段。
b) 使用無關聯子查詢,而不要使用關聯子查詢。
c) 清楚明白地使用列名,而不能使用列的序號。
d) 用事務保證數據的完整性。
7.3 對象使用
a) 盡可能晚地創建對象,并且盡可能早地釋放它。
7.4 模塊設計原則
a) 不允許隨意定義公用的函數和類。
b) 函數功能單一,不允許一個函數實現兩個及兩個以上的功能。
c) 不能在函數內部使用全局變量,如要使用全局變量,應轉化為局部變量。
d) 函數與函數之間只允許存在包含關系,而不允許存在交叉關系。即兩者之間只存在單方向的調用與被調用,不存在雙向的調用與被調用。
7.5 結構化要求
a) 禁止出現兩條等價的支路。
例如:if (a == 2)
else if (a== 3)
//
else if (a == 2)
//
else
//
b) 避免使用GOTO語句
c) 用 IF 語句來強調只執行兩組語句中的一組。禁止 ELSE GOTO 和 ELSE RETURN。
d) 用 CASE 實現多路分支
e) 避免從循環引出多個出口。
f) 函數只有一個出口。
g) 不使用條件賦值語句。
h) 避免不必要的分支。
i) 不要輕易用條件分支去替換邏輯表達式
7.6 函數返回值原則
1) 函數返回值
避免使用結構體等復雜類型
使用bool類型:該函數只需要獲得成功或者失敗的返回信息時候
使用int 類型:錯誤代碼用負數表示,成功返回0
8 代碼包規范
本項目中,每個任務在完成一個穩定的版本后,都應打包并且歸檔。
8.1 代碼包的版本號
項目中,代碼包的版本號由圓點隔開的兩個數字組成,第一個數字表示發行號,第二個數字表示該版的修改號。具體用法如下:
1) 當代碼包初版時,版本號為 V1.00;
2) 當代碼包被局部修改或bug修正時,發行號不變,修改號第二個數字增1。例如,對初版代碼包作了第一次修訂,則版本號為 V1.01;
3) 當代碼包在原有的基礎上增加部分功能,發行號不變,修改號第一個數字增1,例如,對V1.12版的基礎上增加部分功能,則新版本號為 V1.20;
4) 當代碼包有重要修改或局部修訂累積較多導致代碼包發生全局變化時,發行號增1。例如,在 V1.15 版的基礎上作了一次全面修改,則新版本號為 V2.00。
8.2 代碼包的標識
本項目所產生的代碼包都有唯一、特定的編碼,其構成如下:
S-項目標識-代碼包類型-版本號/序號
其中:
1) S:本項目的標識,表明本項目是“XXXX”。
2) 項目標識:簡要標識本項目,此標識適用于整個項目的文檔。
3) 代碼包類型:取自以下表的兩位字母編碼。
4) 版本號:本代碼包的版本號。
5) 序號:四位數字編碼,指明該代碼包在項目代碼庫的總序號。
例如:
一個Windows下RAR源碼的壓縮代碼包命名為: S-XXXX-WS-V1.02/0001
項目的代碼包分類表
類 型 編 碼 注 釋
RAR包
(web) 源碼文件 WS 源代碼文件包
編譯文件 WB 編譯文件包
安裝文件 WI 安裝文件包
源碼代碼 + 安裝文件 WA 源代碼和安裝文件包
項目中所有代碼包的標識清單將在《項目開發計劃》中予以具體定義。
9 代碼的控制
9.1 代碼庫/目錄的建立
項目負責人在VSS中建立項目的文檔庫目錄,即為“Software”目錄,以便快速查詢。
9.2 代碼歸檔
所有代碼在完成一個穩定的版本后,項目負責人都應打包后,存放于VSS中該目的“Software”目錄下,并且依據代碼包的命名規范為代碼包分配一個唯一名稱。
10 輸入控制校驗規則
10.1 登陸控制
用戶登陸ID和登陸密碼,要限定輸入長度范圍,必須檢查輸入合法性。
10.2 數據錄入控制
a) TextBox輸入
1、 要保持用戶輸入和數據庫接收的長度一致
2、 必須進行輸入合法性校驗
如:E_mail格式 XXX@XXX.XXX...
電話格式 020-12345678 (020)12345678
郵政編碼是六位
b) 除CheckBox、RadioButton外,禁止在DataGrid內嵌入其他編輯控件,用以添加編輯數據
11. 數據庫命名規范:
SqlServer命名規范
使用本系統遵循以下命名規范:
1、表命名:用一個或三個以下英文單詞組成,單詞首字母大寫,如:DepartmentUsers;
2、表主鍵名稱為:表名+ID,如Document表的主鍵名為:DocumentID
3、存儲過程命名:表名+方法,如:p_my_NewsAdd,p_my_NewsUpdate;
4、視圖命名:View_表名,如:ViewNews;
5、Status為表中狀態的列名,默認值為0,在表中刪除操作將會改變Status的值而不真實刪除該記錄;
6、Checkintime為記錄添加時間列,默認值為系統時間;
7、表、存儲過程、視圖等對象的所有都為dbo,不要使用數據庫用戶名,這樣會影響數據庫用戶的更改。
附件1:數據類型縮寫表
數據類型 縮寫
string str
int i
char chr
sbyte sb
byte bt
uint ui
long l
ulong ul
float f
double d
bool b
decimal dec
附注:數據庫服務器命名規范,控件名縮寫+控件作用單詞的全稱,如:btnNext, txtPassword(密碼文本框),txtRPassword(密碼確認文本框),單詞的第一個字母必須大寫如果有多個單詞,則為控件縮寫+控件作用的第一個單詞+第二個單詞的全稱,每個單詞名的第一個字母必須大寫
附件2:服務器控件名縮寫表
a、web控件
web控件名 縮寫
AdRotator art
Button btn
Calendar cd
CheckBox chk
CheckBoxList chkl
Comparidator cpv
CustomValidator ctv
DataGrid dg
DataList dl
DropDownList ddl
HyperLink hl
Image img
ImageButton Ibtn
Label lab
LinkButton lbtn
ListBox lst
Panel pl
PlaceHolder ph
RadioButton rb
RadioButtonList rbl
Rangidator rv
RegularExpressionValidator rev
Repeater rp
RequiredFieldValidator rfv
Table tb
TableCell tc
TableRow tr
TextBox txt
ValidationSummary vs
XML XML
b、html控件
html控件名 縮寫
HtmlAnchor hah
HtmlButton hbtn
HtmlForm hform
HtmlGenericControl hgc
HtmlImage himg
HtmlInputButton(按鈕) htxt
HtmlInputButton(重置) hrbtn
HtmlInputButton(提交) hcbtn
HtmlInputCheckBox hick
HtmlInputFile hifile
HtmlInputHidden hihidden
HtmlInputImage hiimg
HtmlInputRadioButton hirb
HtmlInputText(密碼) hpwd
HtmlInputText(文本) hitxt
HtmlSelect hslt
HtmlTable htab
HtmlTableCell htc
HtmlTableRow htr
HtmlTextArea htxta
c.ADO.NET控件命名規范
類型 前綴 示例
Connection con conNorthwind
Command cmd cmdReturnProducts
Parameter parm parmProductID
DataAdapter dad dadProducts
DataReader dtr dtrProducts
DataSet dst dstNorthWind
DataTable dtbl dtblProduct
DataRow drow drowRow98
DataColumn dcol dcolProductID
DataRelation drel drelMasterDetail
DataView dvw dvwFilteredProducts
1.3.3.1字符集設定原則
* 所有將對客戶端產生中文輸出的ASP程序文件,必須在輸出前設定Charset為”GB2312”.如:Response.Charset = “GB2312”
1.3.3.2Request、Session、Application使用規范
* 所有需要放入Session、Application中的對象,必須采用有意義的英文名字。除了被廣泛了解的單詞縮寫以外,不得采用單詞縮寫。如:
Session(“cp”) = strCurrentUserIP ‘不允許
Session(“CurrentUserIP”) = strCurrentUserIP
Session(“Pwd”) = strPwd ‘允許,Pwd被廣泛了解為密碼
* 所有需要在代碼內用到的Request、Session、Application中的元素,必須在代碼頭部賦值給代碼內聲明的變量。
* 如果獲得Form中提交的內容,必須使用Request.Form(“itemName”).
* 如果獲得QueryString中提交的內容,必須使用Request.QueryString(“itemName”)
* 不得在代碼中出現Request(“”)這樣的引用方式
『三層規范』
? 1.數據模型層(實體層)
? ? ? ? ?命名規范:項目名稱+Models
? ? ? ? ?類文件命名:對應數據庫表名(屬性:對應數據庫表字段)
? 2.數據訪問層
? ? ? ? 命名規范:項目名稱+DAL
? ? ? ? 類文件命名:對應數據庫表名+Service(一般定義為靜態類)
? ? ? ? 方法返回類型:盡量返回自定義的類型。(比如:實體對象,實體集合等。)
? 3.業務邏輯層
? ? ? ?命名規范:項目名稱+BLL
? ? ? ?類文件命名:對應數據庫表名+Manager(一般定義為靜態類)
? 4.頁面
? ? ? ?命名規范:對應數據庫表名(或者:動詞+數據庫表名)
? ? ? ?頁面的存放位置:一般放在Views頁面文件夾以(數據庫表名)命名的文件夾中
? ? ? ?頁面調用:一般調用BLL層的類文件和自定義幫助類文件。(目前由于項目的比較小可以直接調用DAL層的類文件)
『數據庫編碼規范』
? 要采用大小寫混合,提高名字的可讀性。為區分一個標識符中的多個單詞,把標識符中的每個單詞的首字母大寫。不采用下劃線作分隔字符的寫法。有兩種適合的書寫方法,適應于不同類型的標識符:
PasalCasing:標識符的第一個單詞的字母大寫;
camelCasing:標識符的第一個單詞的字母小寫。
標識符 | 大小寫 | 示例 |
Pascal | namespace Com.Techstar.ProductionCenter | |
類型 | Pascal | public class DevsList |
接口 | Pascal | public interface ITableModel |
方法 | Pascal | public void UpdateData() |
屬性 | Pascal | Public int Length{…} |
事件 | Pascal | public event EventHandler Changed; |
私有字段 | Camel | private string fieldName; |
非私有字段 | Pascal | public string FieldName; |
枚舉值 | Pascal | FileMode{Append} |
參數 | Camel | public void UpdateData(string fieldName) |
局部變量 | Camel | string fieldName; |
總結
以上是生活随笔為你收集整理的Asp.Net编码规范的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 第六章 linux中的进程管
- 下一篇: 一个快播倒下去,千千万万个快播站起来