項目相關定義 每個團隊開發都應有自己的一套規範,一個優良可行的規範可以使我們工作得心應手事半功倍。由于此項目開發的分散性、獨立性、整合的互動性等,為了有利于項目的整體風格統一、代碼維護和擴充,是以定制了這套簡單的約定和規則。 本文檔将定制一系列約定和規則,他們分别包括代碼目錄約定、檔案夾命名規則、檔案名命名規則、程式代碼程式設計風格、資料庫設計約定。這些規則和約定需要與開發人員、設計人員和維護人員共同讨論定制,将來開發都将嚴格按規則或約定開發 2.1.1項目目錄約定 ****電信[數字***]英文DigitizeSLSys ----------Project目錄(即DigitizeSLSys) |-----------Inc/ 公用伺服器端函數定義(整個項目公用) |-----------JsInc/ JavaScript共用函數(整個項目公用) |-----------Database/ 資料庫相關檔案(如為sqlserver,把*.sql放到這裡面) |-----------Include / 引用頭檔案(top等,整個項目公用) |-----------首頁相關頁面程式代碼檔案 |-----------子產品目錄/ (每個子產品都按此約定) | |---------Inc/ 公用伺服器端函數定義(本子產品公用,比如資料庫連接配接) | |---------JsInc/ JavaScript共用函數(本子產品公用) | |---------UpPic/ 上傳圖檔的儲存目錄 | |---------Upfile/ 上傳檔案的儲存目錄 | |---------Images/ 圖檔的目錄 | |---------Css/ 頁面css風格目錄 | |---------Include/ 引用頭檔案(top等) | |---------頁面程式代碼檔案 |-----------Admin/ 管理的代碼 | |---------Inc/ 公用伺服器端函數定義(本子產品公用,比如資料庫連接配接) | |---------JsInc/ JavaScript共用函數 | |---------Images/ 圖檔的目錄 | |---------Css/ 頁面css風格目錄 | |---------Include/ 引用頭檔案(top等) | |---------頁面程式代碼檔案 2.1.2項目開發環境
體系結構: | B/S |
伺服器運作環境: | Microsoft Windows 2000 Server/Windows 2003 server |
WEB伺服器: | IIS5.0/IIS6.0 |
開發平台: | Microsoft Visual Studio.NET 2005 + Dreamweaver8 |
ASP.NET | |
開發語言: | C# |
資料庫系統: | Microsoft SQL Server 2005 |
關鍵技術: | C# + Ajax |
代碼管理: | Microsoft Visual SourceSafe 2005 |
2.1.3項目代碼約定 2.1.3.1檔案指令約定(包括圖檔檔案) 1. 檔案名隻能用英文字母,第一個字母大寫,每個單詞第一個字母大寫,長度不要超過20字元。例:NewsLogo.gif 2. 代碼和界面分離:每一個頁面的界面用*.aspx命名,實作代碼用*.cs。 3. 類别相同檔案的命名分為頭和尾兩部分,如: RegisterForm.aspx RegisterPost.aspx LogoNews.gif LogForum.gif 這樣是為了友善如果我們按檔案名稱排列的時候,相同類别的檔案能夠在一起。 2.1.3.2編碼約定 1. 資料庫連接配接符: Web.config檔案: <? xml version = "1.0"encoding="utf-8"?> <!-- 注意: 除了手動編輯此檔案以外,您還可以使用 Web 管理工具來配置應用程式的設定。可以使用 Visual Studio 中的 “網站”->“Asp.Net 配置”選項。 設定和注釋的完整清單在 machine.config.comments 中,該檔案通常位于 /Windows/Microsoft.Net/Framework/v2.x/Config 中 --> < configuration > < appSettings > < add key = "DataConnectionString"value="workstation id=edg;packet size=4096;user id=Test;data source=localhost;persist security info=False;initial catalog=TestDB;password=123"/> </ appSettings > < connectionStrings /> < system.web > <!-- 設定 compilation debug="true" 将調試符号插入 已編譯的頁面中。但由于這會 影響性能,是以隻在開發過程中将此值 設定為 true。 --> < compilation debug = "true" /> <!-- 通過 <authentication> 節可以配置 ASP.NET 使用的 安全身份驗證模式, 以辨別傳入的使用者。 --> < authentication mode = "Windows" /> <!-- 如果在執行請求的過程中出現未處理的錯誤, 則通過 <customErrors> 節可以配置相應的處理步驟。具體說來, 開發人員通過該節可以配置 要顯示的 html 錯誤頁 以代替錯誤堆棧跟蹤。 --> < customErrors mode = "RemoteOnly"defaultRedirect="GenericErrorPage.htm"> < error statusCode = "403"redirect="NoAccess.htm" /> < error statusCode = "404"redirect="FileNotFound.htm" /> </ customErrors > </ system.web > </ configuration > 2. 實際調運的 ADO.NET運用 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient; /// <summary> /// 使用者注冊類(使用者注冊,并傳回ID) /// </summary> public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { //VS2003 用:System.Configuration.ConfigurationSettings.AppSettings SqlConnection Conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings.Get("DataConnectionString")); Conn.Open(); SqlCommand CmdInsert = new SqlCommand("Users_Insert", Conn); CmdInsert.CommandType = CommandType.StoredProcedure; //VS2003 隻用:CmdInsert.Parameters.Add CmdInsert.Parameters.AddWithValue("@UserType", UserType.Text.ToString()); CmdInsert.Parameters.AddWithValue("@UserName", UserName.Text.ToString()); CmdInsert.Parameters.AddWithValue("@UserPassWord", UserPassWord.Text.ToString()); CmdInsert.Parameters.AddWithValue("@UserEmail", UserEmail.Text.ToString()); SqlParameter parmReturnValue = new SqlParameter("@Userid", SqlDbType.Int); int intAuthorCount; parmReturnValue.Direction = ParameterDirection.Output; CmdInsert.Parameters.Add(parmReturnValue); SqlTransaction Trans = Conn.BeginTransaction(); try { CmdInsert.Transaction = Trans; CmdInsert.ExecuteNonQuery(); intAuthorCount = (int)CmdInsert.Parameters["@Userid"].Value; Trans.Commit(); Response.Write("<script>alert(' 祝賀您!使用者添加成功!');</script>" ); Response.Write(intAuthorCount); CmdInsert.Dispose(); Conn.Close(); } catch (Exception Err) { Response.Write(Err.Message); } 3. 過程函數 : -- ================================================ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Andy Lu -- Create date: 2007-2-12 10:46 -- Description: 使用者注冊 -- 參數 -UserId :使用者 ID ; -- 參數 -UserType :使用者類型; -- 參數 -UserName :使用者名稱; -- 參數 -UserPassWord :使用者密碼; -- 參數 -UserEmail :使用者郵箱; -- ============================================= CREATE PROCEDURE [dbo].[Users_Insert] @UserId int output, @UserType int, @UserName nvarchar(50), @UserPassWord nvarchar(50), @UserEmail nvarchar(50) AS begin tran INSERT INTO [UserInfo] ( [usertype], [username], [userpassword], [UserEmail] ) values ( @UserType, @UserName, @UserPassWord, @UserEmail ) if @@error<>0 goto error set @UserId=@@identity Commit tran return -- 事務處理 ERROR: set @UserId = 0 rollback tran go 2.1.3.3變量約定 2.1.3.3.1變量約定 每個變量第一個字母小寫,以後每個單詞第一個字母大寫。 出于易讀和一緻性的目的,變量名字的字首定義如下:
子類型 | 字首 | 示例 |
Boolean | bln | blnFound |
Byte | byt | bytData |
Date (Time) | dtm | dtmStart |
Double | dbl | dblTolerance |
Error | err | errOrderNum |
Integer | i | iQuantity |
Long | l | lQuantity |
Object | obj | objCurrent |
Single | sng | sngAverage |
String | str | strFirstName |
Array | arr | arrName |
2.1.3.3.2變量格式 格式如下 : string strStfId = Session["UserId"].ToString().Trim(); string strStfId = Request.QueryString.GetValues("StfId").GetValue(0).ToString(); 2.1.3.3.3控件約定 建議是使用控件名簡寫作為字首,并且簡寫的首字母小寫,符合Camel規範。 格式:控件名簡寫+英文描述,英文描述首字母大寫 主要控件名簡寫對照表
序号 | 控件名 | 控件簡寫 | 備注 |
1 | Label | lbl | lblId |
2 | TextBox | txt | txtName |
3 | Button | btn | btnOk |
4 | CheckBox | chk | chkSex |
5 | RadioButton | rdo | |
6 | CheckBoxList | chklst | |
7 | RadioButtonList | rdolst | |
8 | ListBox | lst | |
9 | DropDownList | ddl | |
10 | DataGrid | dg | |
11 | DataList | dl | |
12 | Image | img | |
13 | Table | tbl | |
14 | Panel | pnl | |
15 | LinkButton | lnkbtn | |
16 | ImageButton | imgbtn | |
17 | Calender | cld | |
18 | AdRotator | ar | |
19 | RequiredFieldValidator | rfv | |
20 | CompareValidator | cv | |
21 | RangeValidator | rv | |
22 | RegularExpressionValidator | rev | |
23 | ValidatorSummary | vs | |
24 | CrystalReportViewer | rptvew |
2.1.3.4資料庫約定 2.1.3.4.1命名約定 1. 庫的命名:隻能用英文字母,第一個字母大寫,每個單詞第一個字母大寫,長度不要超過20字元。 2. Table命名約定:隻能用英文字母,第一個字母大寫,每個單詞第一個字母大寫,長度不要超過30字元。 3. 字段命名:隻能用英文字母,第一個字母小寫,每個單詞第一個字母大寫,長度不要超過30字元。 2.1.3.4.1連接配接庫約定 1. 在程式連接配接庫的時候請不要用sa賬号,請用為每一個庫單獨添加的user賬号連接配接。也就是說每建一個新庫,要單獨給他一個是用賬号,這個帳号提供給程式中用。 2. 在程式中請使用ADO.NET連接配接 2.1.3.5 注釋 2.1.3.5.1頭檔案注釋 在代碼檔案的頭部進行注釋,标注出創始人、創始時間、修改人、修改時間、代碼的功能,這在團隊開發中必不可少,它們可以使後來維護/修改的同伴在遇到問題時,在第一時間知道他應該向誰去尋求幫助,并且知道這個檔案經曆了多少次疊代、經曆了多少個程式員的手。例如: 注: 我們甚至可以在這段檔案頭注釋中加入版權資訊、檔案名、版本資訊等。 2.1.3.5.2函數、屬性、類等注釋(可擴充) 請使用 ///三斜線注釋,這種注釋是基于XML的,不僅能導出XML制作幫助文檔,而且在各個函數、屬性、類等的使用中,編輯環境會自動帶出注釋,友善你的開發。以protected,protected Internal,public聲明的定義注釋請都以這樣命名方法。 比如: /// <summary> /// 使用者注冊類(使用者注冊,并傳回ID) /// </summary> 2.1.3.5.3邏輯點注釋 在我們認為邏輯性較強的地方加入注釋,說明這段程式的邏輯是怎樣的,以友善我們自己後來的了解以及其他人的了解,并且這樣還可以在一定程度上排除 BUG。在注釋中寫明我們的邏輯思想,對照程式,判斷程式是否符合我們的初衷, 如果不是,則我們應該仔細思考修改的是注釋還是程式了。 2.2源檔案管理 所有網站相關的源檔案(包括文檔,圖檔等)均放到Microsoft Visual SourceSafe中統一管理。 源檔案修改前需要進行check out操作,然後進行操作,禁止手動更改本地源檔案隻讀屬性。修改完畢後,進行check in操作,更新源檔案,如有說明的必要,請在check in的時候寫上注釋說明。