附錄一.Windows控件縮寫規範程序員
數據類型數據庫 |
數據類型簡寫設計模式 |
標準命名網絡 |
Lable架構 |
Lbl測試 |
LblMessagethis |
LinkLable編碼 |
llblspa |
LlblToday設計 |
Button |
btn |
Btnsave |
TextBox |
Txt |
TxtName |
MainMenu |
mmnu |
MnnuFile |
CheckBox |
chk |
chkStock |
RadioButton |
rbtn |
RbtnSelected |
GroupBox |
gbx |
GbxMain |
pictureBox |
pic |
PicImage |
Panel |
pnl |
PnlBod |
DataGrid |
dgrd |
DgrdView |
ListBox |
cbo |
CboMenu |
TreeView |
tvw |
Tvw |
TabControl |
tctl |
tctlSelected |
DataTimePicker |
dtp |
dtpStartData |
HscrollBar |
hsb |
hsbImage |
VscrollBar |
vxb |
vsbImage |
Timer |
tmr |
tmrCount |
ImageList |
ilst |
ilstImage |
ToolBar |
Tlb |
tlbManage |
StatusBar |
stb |
stbFootPrint |
OpenFileDialog |
odlg |
odlgFile |
SaveFileDialog |
sdlg |
sdlgSave |
FoldBrowserDialog |
fbdlg |
fgdlgBrwser |
FontDialog |
fdlg |
fdlgFoot |
ColorDialog |
cdlg |
cdlgColr |
PrintDialog |
pdlg |
pdlgPrints |
|
數據類型 |
數據類型簡寫 |
標準命名 |
AdRotator |
Asrt |
Example |
Button |
Btn |
BtnSubimit |
Calendar |
Cal |
calMettingDatas |
CheckBox |
Chk |
ChkBlue |
CheckBoxList |
Chkl |
chkFavClors |
CompareValidator |
Valx |
valxDBCheck |
DataGrid |
Dgrd |
DgrdTitles |
DataList |
Dlst |
DlstTitle |
DropdownList |
Drop |
dropCountries |
HyperLink |
Lnk |
LnkDetail |
Image |
img |
ImgAuntBetty |
ImageButton |
ibtn |
IbtnSubmit |
Label |
Lbl |
LblResult |
LinkButton |
lbtn |
LbtnSubmit |
ListBox |
Lst |
LstCountries |
Panel |
pnl |
pnlForm2 |
PlaceHolder |
Plh |
PlhFormContens |
RadioButton |
Rad |
RadFemale |
RadioButtonList |
radl |
RadlGer |
RangValidator |
valg |
ValgAge |
Regular Expression |
vale |
valeEmail Vaildator |
Repeater |
Rpt |
ValrFirstName |
Table |
Tbl |
TblCountryCodes |
TableCell |
tblc |
TblcGermany |
TableRow |
tblr |
TblrCountry |
TextBox |
Txt |
TxtFirstName |
ValidationSummary |
vals |
valsFormError |
XML |
xmlc |
XmlcTranformResults |
|
數據類型 |
數據類型簡寫 |
標準命名舉例 |
Connection |
Con |
ConNorthwind |
Command |
Cmd |
CmdReturnProducts |
Parameter |
Parm |
ParmProductID |
DataAdapter |
Dap |
DapProducts |
DataReater |
Dtr |
DtrProducts |
DataSet |
Ds |
DsNorthWind |
DataTable |
Dt |
DtProduct |
DataRow |
Drow |
DrowRow |
DataColumn |
Dcol |
DcolProductID |
DataRelation |
drl |
DrlMasterDetail |
DataView |
dvw |
DvwFilteredProducts |
數據類型 |
數據類型簡寫 |
標準命名舉例 |
||
Bool |
b/is |
IsVisable |
||
Float |
F |
FPrice |
||
Double |
D |
DPrice |
||
Unit |
U |
Uage |
||
Int |
I |
iNumber |
||
Char |
Ch |
ChCode |
||
Byte |
Bt |
BtImages |
||
String |
Str |
StrName |
||
Struct |
St |
stStudents |
||
Windows |
Wnd |
WndMain |
||
AttayList |
Lst |
LstStudents |
||
Array |
Arr |
ArrStudents |
||
Hashtable |
Ht |
HtStudents |
|
類型 |
命名規範 |
注意事項 |
事例 |
類或結構 |
Pascal |
首字符大寫 |
HttpContext |
接口 |
Pascal |
加前綴 I |
IdataAdapter |
枚舉名 |
Pascal |
首字符大寫 |
CommandType |
枚舉值 |
Pascal |
首字符大寫 |
CommandType.Text |
事件 |
Pascal |
首字符大寫 |
SelectedINdexChanged |
自定義異常 |
Pascal |
加後綴Exception |
ArgumentException |
公共字段 |
Pascal |
首字符大寫 |
Int32.MaxValue |
方法 |
Pascal |
首字符大寫 |
ToString |
命名空間 |
Pascal |
首字符大寫 |
System.Xml |
屬性 |
Pascal |
首字符大寫 |
BackColor |
保護或私有字段 |
Camel |
首字符小寫 |
MyVariable |
參數 |
Camel |
首字符小寫 |
cmdText |
附錄二.命名規範
一.類
1.1..使用Pascal規則命名類名,即首字母要大些.。
如:
Class person
ClassBmpFileStream
1.2.使用可以反映類功能的名詞或名詞短語命名類。
如:
public classFileStream
public class Button
public classstring
1.3.不要使用「_」,」C」,」I」等特定含義前綴。
如:
class –ManagerSystem
classCManagerSystem
classImanagerSystem
1.4.自定義異常類應以Exception結尾。
如:
Public class EmailException:Exception
{
//類體
}
1.5.文件名要能反映類的內容,最好是和類同名。
2、類字段
2.1.用camel規則來命名類成員變量名稱,即首單詞(或單詞縮寫)小寫。
如:
class Student
{
string stuName;
string stuNo;
string password;
}
2.2.類字段變量名前加」_」前綴。
如:
Class student
{
String_stuName;
String _stuNo;
}
2.3堅定在普通變量前加」m_」前綴(這是VC老命名規則)。
如:
Class Student
{
sting m_stuName;
sting m_stuNo;
}
三. 方法
3.1方法採用Pascal規則,第一個字符要大寫。
如:
public void DoubleVaule(){…}
public void Show(){…}
3.2方法名應使用動詞或動詞短語。
如:
void RemoveAll(){…}
void GetCharArray(){…}
void Invoke()
3.3類中訪問修飾符或者功能相同的方法應該放在一塊兒,且公共或實現接口的方法在前。
如:
Class Test
{
public void Invoke(){…}
public void Insert(){…}
private void RemoveAll(){…}
private void GetCharArray(){…}
}
四.屬性
4.1使用名詞定義屬性,屬性使用Pascal規則,首字符大寫。
如:
public class Book
{
public Color BookName
{
//屬性代碼
}
}
4.2屬性和相應字段名稱要關聯,可使用」重構」菜單來生成屬性.
如:
publicclass Book
{
private string bookName;
public Color BookName
{
Get{returnbookName;}
}
}
五.參數
5.1參數採用camel規則命名,首字符小寫。
如:
String Format(string format,object[] args){…}
5.2使用描述性參數名稱,參數名稱應當具備足夠的說明性。
5.3不要給參數加匈牙利類型表示法的前綴。
以下面是不合理的:
voidInsert(string sName,string strAddress)
應該爲:
void Insert(stringname,string address)
5.4檢查方法全部輸入參數的有效性。
六.常量
6.1只讀常量使用Pascal命名規則,即首字母大寫。
如:
class Calendar
{
public readonlyColor RedColor;
public constTuesday;
}
6.2枚舉命名使用Pascal規則命名,枚舉成員本質屬於常量,命名規則同上。
如:
enum CarColor { Red , Blue , Yellow }
6.3枚舉值從小到大順序定義。
如:
enumCarColor
{
Red = 1;
Blue= 2;
Yellow = 3;
}
6.4靜態字段或屬性採用Pascal規則,首字符大寫。
public class Component:IComponent
{
static string typeName;
public static string TypeName{get;set}
}
七.接口
7.1接口定義使用Pascal規則,且必須以大寫」I」開頭。
public interfaceIDatePort
public interfaceIFormatable
7.2接口名稱要有意義,中間不要有下劃線」_」等字符串。
如:
interface I_Date_Port 是不合適的。
7.3若是類實現了接口,名稱儘可能和接口相同,只是省掉」I」字符。
public interface IComponent
{
//接口定義
}
public classComponent: IComponent
{
//類實現
}
八.事件
8.1委託名稱採用Pascal規則,第一個字符大寫。
如:
public delegate voidCountHandler(int x,int y);
8.2定義事件的委託要使用EventHandler後綴,且包括sender和e兩個參數。
如:
Delegate voidMouseEventHandler(object sender,MouseEventArgs e) ;
8.3事件用到的參數類,名稱要帶EventArgs後綴。
如:
public classMouseEventArgs:EventArgs
{
//參數類內容
}
九.命名空間
9.1命名空間名稱採用Pascal規則,首字符大寫。
如:
NamespaceHairCompany
{
//命名空間內容
}
9.3命名空間名稱儘可能反映其內容所提供的總體功能。
如:
Microsoft.Media
Microsoft.Media.Design
附錄三.註釋規範
一.文件頭部註釋
1.1 文件都包含文件頭,要說明文件名、做者、建立時間、變動記錄等。
如:
/***********************
*文件名:CarPrint.cs
*做者:趙建磊
*建立日期:2010-05-23
*描述:完成打印功能
*修改日期:2009-11-23
*Email:perrymail@126.com
***********************/
1.2推薦採用.NET形式書寫頭部註釋。
如:
///<summary>
///文件名:CarPrint.cs
///做者:趙建磊
///建立日期:2010-05-23
///描述:完成打印功能
///修改日期:2009-4-23
///Email:perrymail@126.com
///</summary>
二.類及其成員註釋
2.1對方法和類使用」///」三斜線註釋。
如:
///<summary>
///功能:對此類功能的描述
///做者:做者中文名
///日期:編寫日期等
///描述:完成打印功能
///修改日期:2009-11-23
///</summary>
ClassBookSystem
{
///<summary>
///圖書詳細信息查詢
///</summary>
Public DataSetSelectBooks(int id)
{
}
}
2.2.代碼行文註釋採用」//」和」/**/」進行,應量說明問題。
PublicDataSet SelectBooks(int id /*書籍ID*/)
{
DataSet dsBook;//註釋數據集
}
2.3添加的註釋必須可以說明此語句塊的做用和實現手段。
2.4全部的註釋都應該用英文或者中文,同一段註釋不要混用兩種語言。
2.5代碼變動須要將舊代碼註釋,而且說說明變動緣由、變動做者和變動時間。
附錄四.行文規範
不可按外貌判定是非,要按公平判定是非。
-----《新約》(john)
版面
儘管在定義代碼樣式的格式時,你能夠作出不少個性化的選擇,但全部這些都是關於審美的。從定義上看,樣式沒有任何句法或語義上的意義;編譯器會忽略樣式。然而源代碼的真正讀者是其餘程序員。編寫代碼時要爲他們的利益着想。
u K&R括號風格
K&R風格是最先爲人們所喜好的風格,它是由C語言之父Kernighan和Ritchie在他們的《C程序設計語言》一書中確立的。因爲這個緣由,這種風格常被認爲是最初和最好的風格。它的誕生來源於在一個小屏幕中顯示儘量多的信息的需求。
int k_and_r( ) {
int a = 0, b = 0;
while (a != 10) {
b++;
a++;
}
return b;
}
優勢
l 佔用空間較小,因此在一屏上一次能夠顯示更多的代碼
l 後括號與相對應的語句縮進相同,因此能夠很容易地找到括號所終止的構造
缺點
l 前括號和後括號上下不對齊,因此視覺上不易匹配
l 若是頁面右側的前括號丟失,將很難發現
l 代碼語句看上去擠做一團
u Allman括號風格
Allman括號風格是一種空間上更開闊的方法。這也是C#語言在國內最流行的風格。
Int exdented( )
{
Int a = 0,b = 0;
While (a != 10)
{
b++;
a++;
}
Return b;
}
優勢
l 格式清晰整潔
l 每一個代碼塊都更易於區分
缺點
l 佔用的豎向空間更多
l 若是你有不少只包含一條語句的代碼塊,那麼會顯得很浪費空間
l 對某些黑客而言這太像Pascal語句了
縮寫規範
l 標識符應當直觀可望文知意,不提倡使用任何縮寫。
l 字符串變量推薦以「str」或「s」開頭,採用string.Empty來初始化。
如:
String strName = string.Empty;
l 普通對象能夠以「obj」開頭。
如:
Book objBook=new Book( );
l 縮寫可自行定義,通常取單詞的前/後字符組成,以含義直觀爲準則。
合理名稱如:
Label lblName;
Lable lbName;
Color bkColor;
ColorbackgroudColor;
Color bgColor;
l 通常狀況下不要讓縮寫破壞標識符的含義。
如:
Public StudentGetStudent( )
排版
l 每行語句至少佔一行,若是語句過(超過一屏),則語句斷爲兩行顯示。
如:
Public void Insert(string bookName,
String bokID,
String bookDetail,
Int bookNumber
);
下列定義不合理:
frmMain.Width = 0;frmMain.Height=0;
應爲:
frmMain.Width = 0;
frmMain.Height=0;
l 把類似的內容放在一塊兒,好比字段、屬性、方法、事件等,使用「#region」命令分組。
如:
Class Book
{
#region構造方法
PublicBook(string name) {…}
#endregion
#region公共方法
PublicBook GetBookByName(string name) {…}
#endregion
#region屬性
Publicstring Name{…}
#endregion
#region私有字段
Privatestring name;
#endregion
}
l 多個程序元素進行對等操做時,操做符以前、以後或者先後要加空格。
如:
If (!ValidNi(ni))
{
//程序代碼
}
nRepssnInd = SsnData[index].nRepssnIndex;
nRepssnNi = SsnData[index].ni;
l 每一個方法的源程序行數原則上應該少於200行。
l 語句嵌套層次不得超過3層。
l 避免相同的代碼段在多個地方出現。
語句結構
l 若是使用了異常結構,必定要處理異常,通常是要寫日誌文件。
如:
try
{
//異常監控代碼
}
Catch(Exception e)
{
Log.WriteLine(e.Messge);
}
l 分支語句不該該使用複雜長條件。
如:
If(txtName ==null || txtName == string.Empty)
{
//處理代碼
}
應該將長條件封裝成方法:
if(txtNameEnable( )) {…}
switch語句,case後面必須接break(這一點C#已經強行限制)。
l 禁止使用goto語句進行跳轉。
l 行文中嚴禁出現「魔數」,特定含義的常數必須定義成枚舉或常量。
如:
if( objCar.Type==1) objCar.Run( );
應爲:
if(objCar.Type==Cars.BMP)objCar.Run( );
l 不一樣類型的操做符混合使用時,使用括號給出優先級。
如:
if( year % 4 == 0|| year % 100 != 0 && year % 400 == 0)
應爲:
If((year % 4) == 0 ||((year % 100) != 0 && (year % 400) == 0 ))
l 不容許使用複雜的操做符組合。
如:
maxVal = ((a>b ? a:b) > ? (a>b ? a : b) : c);
應該爲:
temp = (a>b ? a : b);
maxVal = ( iTemp > b ? iTemp : b);
l 循環、判斷語句的程序塊部分用花括號括起來,即便只有一條語句。
如:
if(condition)
flag = true;
推薦改成:
if(condition )
{
flag = true;
}
l 在switch語句中老是要有default子句,建議使用斷言。
CarType type = GetType( );
Switch (type)
{
case CarType.GMC:
return new GMCCar();
break;
case CarType.BMW:
return new BMWCar();
break;
default:
Debug.Assert(false);
break:
}
l 每一個類和方法完成單一的功能,不設計多用途面面俱到的類和方法。
l 嚴禁使用未經初始化的變量,變量一般使用構造方法來初始化。
大小寫
l 不要建立名稱相同,但大小寫區別的任何元素。
如:
Void MyFunction(string a, string A)
int Color {get, set}
int CoLor{get,set}
l 應當大寫僅有兩個字符的縮寫。
如:
string stuID;
l 不要把易混淆的數字和字母放在一塊兒。
如:
string r = (lo == 10) ? (I1 == 11) : (lol != 101);
l 使用英文命名標識符。
l 不容許變量名、類名、屬性名、方法名等與系統標識符重名。
SQL編碼規範
l SQL語句所有大寫。
如:
SELECT psnNameFROM person
CREATE PROC p_Selectproc
l 對較複雜的SQL語句加上註釋,說明其功能。
l 鏈接符OR、IN、AND、以及=、<=、>=等先後加上一個空格。
l 使用明確的列代替SELECT*。
如:
SELECT A.ID, A.NAME, B.ID, B.NAME
FROM CLASS A, PERSON B
WHERE A.ID = B.ID
AND A.GRADE = ‘5’
軟件架構
l 數據庫中每一張表對應一個實體類/所據傳輸對象(DTO)。
l 實體類名稱使用表名,也可帶有Dto後綴。
如:
classpersonDto
{
Public String Nme
{
get{return name;}
get{this.name = value;}
}
}
l 三層架構應當合理使用,不該生搬硬套。
三層架構元素推薦後綴:
數據傳輸對象 XxxxDto
DAO工廠 XxxDAOFactory
DAO接口 IXxxxDAO
服務接口 IXxxxService
DAO的數據庫實現 XxxxDAOOracle/XxxxDAOInfomix
業務邏輯 XxxxManger
系統
l 在國內不要隨便使用設計模式等代碼模式,由於並不流行。
l 系統輸入、資源操做、(如內存分配、文件及目錄操做)、網絡操做(如通訊、調用等)、任務之間的操做(如通訊、調用等)時必須進行錯誤、超時或異常處理。
l 模塊編寫應該有完善的測試方面的考慮。