編程規範
編程規範
[編輯]第一章 術語定義
[編輯]* **Pascal 大小写**
將標識符的首字母和後面連接的每個單詞的首字母都大寫。可以對三字符或更多字符的標識符使用Pascal 大小寫。例如:
BackColor
* **Camel 大小写**
標識符的首字母小寫,而每個後面連接的單詞的首字母都大寫。例如:
backColor
第二章 命名規範
[編輯]代碼
[編輯]除了參數、私有的實例欄位、方法內的變量使用Camel命名;其它情況,如類、公有欄位、方法名、屬性名等都使用Pascal;與共有欄位相配對的私有欄位以m_開始 如:
* 参数
public void SampleMethod(Int32 testVar1,Int32 testVar2)
{
}
* 私有的实例字段
class SampleClass
{
private String sampleString;
}
* 方法内的变量
public void SampleMethod(Int32 testVar1,Int32 testVar2)
{
String sampleMethod;
}
* 与共有字段相配对的私有字段
private Int32 m_Handle;
public Int32 Handle
{
get
{
return handle;
}
}
控制項
[編輯]主要控制項名簡寫對照表\\ 控制項名簡寫+英文描述,英文描述首字母大寫 ^ 控制項名 ^ 簡寫 ^ 控制項名 ^ 簡寫 ^ 控制項名 ^ 簡寫 ^ 控制項名 ^ 簡寫 ^ | Label | **lbl** | TextBox | **txt** | RadioButtonList | **rdl** | Image | **img** | | Button | **btn** | LinkButton | **lnkbtn** | Panel | **pnl** | Repeater | **rpt** | | ImageButton | **imgbtn** | DropDownList | **ddl** | Table | **tbl** | HyperLink | **lnk** | | ListBox | **lst** | DataGrid | **dg** | RequiredFieldValidator | **rfv** | CompareValidator | **cv** | | DataList | **dl** | CheckBox | **chk** | RangeValidator | **rv** | RegularExpressionValidator | **rev** | | CheckBoxList | **chl** | RadioButton | **rdo** | ValidatorSummary | **vs** | SqlDataReader | **sdr** | | DataRow | **dr** | DataSet | **ds** | DataTable | **dt** | | |
樣式表
[編輯]* 类名遵循Pascal大小写 * 类取名的原则是通过类名,能够看得出此样式的用处或者基本样式特性: * 指出样式的特性,如:.Section__Blue__(蓝色区块),.Main__Center__Div(居中的主区块) * 指出样式的用途,如:.LatestNews(最新新闻),.WeeklyReport(一周报告),这样的命名适用于某个频道或者页面,其名字在一个页面上一般是唯一的 * 价值中国的通用样式 * span.LiTitle, span.LiDate(li中左右两列样式) * div.clearer(样式清除器,因修改成本太大,目前只有这个没有遵循Pascal命名规则) * .HSpace0x(x一般为5,这是间隔x像素的横条) * 适用于特定标签的类名前要加上标签名:
div.SectionBlue{ }
td.Alternating{ }
li#HighLight{ }
* 样式的类定义遵循HTML标签的层次关系(通用样式除外)
如:
-
樣式表定義:
div.SectionBlue{ }
div.SectionBlue ul#LatestNews{ }
div.SectionBlue ul#LatestNews li.Alternating{ }
span.LiTitle{ } /*通用样式*/
span.LiDate{ } /*通用样式*/
文件、目錄、URL
[編輯]文件、目錄命名均遵循Pascal;\\ 如:
* /User/UpdateInfo.aspx * /UserControls/User/UserInfo.ascx
URL(包括參數)遵循Pascal\\ 如:
* /User/Message.aspx?UserID=n * /Search.aspx?Keyword=x&Source=s
資料庫
[編輯]- 表、欄位**\\
遵循Pascal命名規則
* 表,如:Blog、BlogComment * 字段,如:UserID、MdyTime、Content
- 索引**\\
非聚集索引:IX_表名_索引欄位\\ 如:
* IX_BlogEntry_Passed_AddTime * IX_UserInfo_LastLoginTime
- 存儲過程**\\
pr_表名_動作\\
* 比如你要删除一本书:pr_Book_Delete; * 或者你要修改一篇文章:pr_Boke_Modify(或update); * 或者你要列出一本杂志的信息:pr_Mag_Select(或Show);
- 視圖**\\
vi_Pascal命名規則,如:vi_Boke、vi_BokeComment
- 觸發器**\\
tr_表名_Insert[Update|Delete],如:
* tr_Book_Insert * tr_BlogEntry_Delete
- 注意:除非沒有替代解決方案,嚴禁使用觸發器**
如果這個存儲過程並不是通用的,你可以在存儲過程的末尾增加這個存儲過程使用的場合,
* 比如你要在个人主页列表书籍:pr_Book_List_AuthorIndex
- 常用欄位命名規範**\\
AddTime:添加时间,MdyTime:修改时间,Adder:添加者,Mdyer:修改者,IsXXX:是否XXX(如IsElite:是否推荐,IsHide:是否隐藏),XXXs:XXX数量(如Hits:点击数,Comments:评论数,Elites:推荐数,Digs:推荐数)
8-o **注意:表、欄位的命名必須以英文字母開始**
第三章 空行
[編輯]空行是為了將邏輯上相關聯的代碼分塊,以便提高代碼的可閱讀性。
- 在以下情況下使用兩個空行**
- 接口和类的定义之间。 - 枚举和类的定义之间。 - 类与类的定义之间。
- 在以下情況下使用一個空行**
* 方法与方法之间。
public void SampleMethod1(Int32 testVar1, Int32 testVar2)
{
}
public void SampleMethod2(Int32 testVar1, Int32 testVar2)
{
}
* 方法中变量声明与语句之间。
public void SampleMethod1(Int32 testVar1, Int32 testVar2)
{
String sampleVar1;
String sampleVar2;
Response.Write("Sample");
}
* 属性与属性之间。
public String SampleProperty1
{
get { }
set { }
}
public String SampleProperty2
{
get { }
set { }
}
* 方法中不同的逻辑块之间。
public void SampleMethod1(Int32 testVar1, Int32 testVar2)
{
Int32 multiplyResult = testVar1 * testVar2;
Response.Write(multiplyResult);
Int32 plusResult = testVar1 + testVar2;
Response.Write(plusResult);
}
* 方法中的返回语句与其他的语句之间。
public Int32 SampleMethod1(Int32 testVar1, Int32 testVar2)
{
Int32 multiplyResult = testVar1 * testVar2;
Response.Write(multiplyResult);
return multiplyResult;
}
* 属性与方法、属性与字段、方法与字段之间。
public String SampleField1;
public String SampleProperty1
{
get { }
set { }
}
public void SampleMethod2(Int32 testVar1, Int32 testVar2)
{
}
* 注释与它注释的语句间不空行,但与其他的语句间空一行。
public void SampleMethod1(Int32 testVar1, Int32 testVar2)
{
//将两数相乘
Int32 multiplyResult = testVar1 * testVar2;
//输出相乘结果
Response.Write(multiplyResult);
}
第四章 注釋
[編輯]- 注釋原則**
* 为了防止问题反复出现,对错误修复和解决方法代码总是使用注释;
* 注释代码中不十分明显的任何内容;
* 修改代码时,总是使代码周围的注释保持最新;
* 在声明接口、类、方法、属性、字段时,都应该用.Net的XML型文档注释
/// <summary>
/// 示例类
/// </summary>
class SampleClass
{
/// <summary>
/// 字体颜色代码,16进制
/// </summary>
public String FontColor;
/// <summary>
/// 新闻数量
/// </summary>
public String Counts
{
get { }
set { }
}
/// <summary>
/// 计算两个整数相乘的结果并输出
/// </summary>
/// <param name="testVar1">乘数</param>
/// <param name="testVar2">被乘数</param>
public void SampleMethod1(Int32 testVar1, Int32 testVar2)
{
//将两数相乘
Int32 multiplyResult = testVar1 * testVar2;
//输出相乘结果
Response.Write(multiplyResult);
}
}
第五章 申明
[編輯]- 一行只做一个申明 - 建议在申明时就做初始化 - 申明建议放在代码块的开始,而不要在使用时才申明,循环中的i,j等除外 - 不要使用public 或 protected 的实例字段。避免将字段直接公开给类以外的开发人员。考虑为字段提供 get 和set 属性访问器,而不是使它们成为公共的。 get 和 set 属性访问器中可执行代码的存在使得可以进行后续改进。示例:
private Int32 m_Handle;
public Int32 Handle
{
get
{
return m_Handle;
}
}
第六章 語句
[編輯]本章就一句話:即使if else的代碼段中只有一個語句,也要加大括號
第七章 資料庫約定
[編輯]* **新建表、存储过程等数据库对象时,对象名一定要写上其所有者**,例:
正確:
CREATE TABLE [dbo].[SpiderNewsDigRelation]
CREATE PROCEDURE [dbo].pr_Common_Delete
錯誤:
CREATE TABLE SpiderNewsDigRelation
CREATE PROCEDURE pr_Common_Delete
* **SQL语句的关键词一律大写**
正確:
SELECT Field1, Field2 FROM Table1 WHERE Field1 = 'Condition' AND Field2 = 2 ORDER BY Field3 DESC
SELECT A.Field1 FROM Table1 A INNER JOIN Table2 B ON A.ID = B.ID
錯誤:
select Field1, Field2 from Table1 where Field1 = 'Condition' and Field2 = 2 order by Field3 desc
Select A.Field1 From Table1 A Inner Join Table2 B On A.ID = B.ID
第八章 協作
[編輯]- 修改文件之前,要在 StarTeam 里先**刷新**,看有无其他同事锁定,如果有,要通知锁定该文件的同事解锁; - 如果要修改的文件没有被其他同事锁定,要先锁定,再修改 - 当次的任务没有完成之前,**禁止** Check In 任何你锁定的文件 - 当确认自己的任务**完成**(需要经过良好的测试),需要**部署**时,再根据部署文档逐一 **Check In 并 解锁** 自己修改的文件 - 为了不至于自己长时间锁定某文件,影响其他同事的开发,请将自己的任务拆分为粒度较小的多个任务,使之能较短时间(不超过2天)开发、部署完毕 - Template:Knowledge base:部署文档示范.rar
第九章 其他
[編輯]- 尽量不要在生产服务器添加测试数据,若有必要这样做,要在测试后,立即删除测试数据