.Net平台开发的技术规范与实践精华总结 (转)
一、代碼規范
良好的代碼風格來自于同一的代碼規范。風格良好的代碼不僅具備可讀性和可維護性,同時也給人行云流水、賞心悅目之快感。
據Microsoft公司統計,基于微軟平臺的開發中,有70-80%的印度工程師在完成同類算法或者模塊時,使用的代碼基本一致;而相同的調查中只有20%的中國工程師們是基本一致的。這說明我們的代碼生產過程亟待規范。
實義命名
類型、變量、常量、方法等標識符一律采用對應的英文實義;如果涉及到兩個獨立的實義單詞,則中間用下劃線間隔或者單詞首字母大寫(兩種方式都可以);如果標識符的長度超過了30個字母,則基本上以英文單詞發音的重讀音節取選出三個字母,如Repeater用rpt,Management用mgt。
大小寫規則
目前一般有兩種大小寫規則:
Pascal大小寫形式,所有單詞第一個字母大寫,其他字母小寫。
Camel大小寫形式,除了第一個單詞,所有單詞第一個字母大寫,其他字母小寫。
n 類名使用Pascal大小寫形式
public class HelloWorld(或者Hello_World,以下同,不再贅述)
{
...
}
n 方法使用Pascal大小寫形式
public class HelloWorld()
{
void SayHello(string name)
{
...
}
}
n 變量和方法參數使用Camel 大小寫形式
public class HelloWorld()
{
int totalCount = 0;
void SayHello(string name)
{
string fullMessage = "Hello " + name;
...
}
}
n 不要使用匈牙利方法來命名變量
以前,多數程序員喜歡把數據類型作為變量名的前綴而m_作為成員變量的前綴。例如: string m_sName;int nAge;
然而,這種方式在.NET編碼規范中是不推薦的。所有變量都用Camel 大小寫形式,而不是用數據類型和m_來作前綴。
用name,address,salary等代替nam,addr,sal。
別使用單個字母的變量象i,n,x 等。使用 index,temp等。用于循環迭代的變量例外:
如果變量只用于迭代計數,沒有在循環的其他地方出現,允許用單個字母的變量命名,而不是另外取實義名。
文件名要和類名匹配,例如,對于類HelloWorld,相應的文件名應為helloworld.cs。
縮進和間隔
n 縮進用TAB,不用 SPACES。
n 注釋需和代碼對齊。
n 遵循VS2005的自動對齊規則,不要人為的調整。
n 用一個空行來分開代碼的邏輯分組。
n 在一個類中,各個方法的實現體必須用空行間隔,大括弧“{}”需獨立一行。
n 在每個運算符和括號的前后都空一格。如:
If ( showResult == true )
{
for ( int i = 0; i < 10; i++ )
{
//
}
}
而不是:
if(showResult==true)
{
for(int i= 0;i<10;i++)
{
//
}
}
良好的編程習慣
n 避免使用大文件。如果一個文件里的代碼超過300~400行,必須考慮將代碼分開到不同類中。
n 避免寫太長的方法。一個典型的方法代碼在1~30行之間。如果一個方法發代碼超過30行,應該考慮將其分解為不同的方法。
n 方法名需能看出它作什么。別使用會引起誤解的名字。如果名字一目了然,就無需用文檔來解釋方法的功能了。
n 一個方法只完成一個任務。不要把多個任務組合到一個方法中,即使那些任務非常小。
n 使用C# 的特有類型,而不是System命名空間中定義的別名類型。如:
int age;
string name;
object contactInfo;
而不是:
Int16 age;
String name;
Object contactInfo;
這么做是基于如下兩點原因:(1)規范性和一致性;(2)便于跨語言平臺的移植。
n 別在程序中使用固定數值,用常量代替。別用字符串常數,盡量用資源文件。
n 避免使用很多成員變量,聲明局部變量,并傳遞給方法。
n 不要在方法間共享成員變量,如果在幾個方法間共享一個成員變量,那就很難知道是哪個方法在什么時候修改了它的值。必要時使用enum,別用數字或字符串來指示離散值。
n 別把成員變量聲明為 public或 protected。都聲明為private 而使用 public/protected 的Properties。
n 不在代碼中使用具體的路徑和驅動器名,使用相對路徑,并使路徑可編程。永遠別設想你的代碼是在"C:"盤運行。你不會知道,一些用戶在網絡或"Z:"盤運行程序。
n 應用程序啟動時作些“自檢”并確保所需文件和附件在指定的位置。必要時檢查數據庫連接,出現任何問題給用戶一個友好的提示。
n 如果需要的配置文件找不到,應用程序需能自己創建使用默認值。如果在配置文件中發現錯誤值,應用程序要拋出錯誤,給出提示消息告訴用戶正確值。錯誤消息需能幫助用戶解決問題。
注釋
n 別每行代碼,每個聲明的變量都做注釋。在需要的地方注釋。
n 可讀性強的代碼需要很少的注釋,如果所有的變量和方法的命名都很有意義,會使代碼可讀性很強并無需太多注釋。行數不多的注釋會使代碼看起來優雅。
n 如果因為某種原因使用了復雜艱澀的原理,必須為程序配備良好的文檔和詳細的注釋。
n 對注釋做拼寫檢查,保證語法和標點符號的正確使用。
二、數據庫設計規范
表格分類與命名
n 數據表的分類
u 系統表 支撐業務模型的數據表,如流程模型、系統管理相關表。
u 業務表 產品提供的針對業務的通用功能模塊相關表,如通用業務查詢等。
u 用戶表 用戶二次開發使用的與具體業務相關的數據表。
n 數據表的命名
u 所有表格命名一律以字母“T”開頭(Table),并且用實義單詞以下劃線“_”間隔。
u 系統表 系統表前綴為:TSYS_
u 業務表前綴為:TBIZ_
u 用戶表由用戶自行定義,但是建議不要與系統表和業務表的命名規則重復。
n 字段的命名
字段的命名規則參照代碼標識符的命名規則,但是注意避開數據庫的保留字。比如不要采用這樣的字段名:index,field,password,id,Oracle,SQL等等。
對于涉及到技術核心的系統表,為了防止剖析,建議采用類似“F1,F2,F3……Fn”的方式命名。但是不要采用“F0”,因為這個名稱在某些數據庫中不被允許,比如Interbase。
索引的建立
n 索引是一把雙刃劍,索引將提高查詢的效率,但是卻降低了insert/delete/update 的效率。
n 通常情況下,對數據的編輯頻度和時限要求遠遠低于對數據庫的查詢要求,因此對于記錄很多且頻繁查詢的數據表,必須建立索引。
n 大多數數據庫為主鍵字段自動創建索引,注意為外鍵創建索引。
n 不要索引大字段,這樣作會讓索引占用太多的存儲空間。
n 盡量不要索引頻繁編輯的小型表。
n identify字段不要作為表的主鍵與其它表關聯,這將會影響到該表的數據遷移。如果考慮支持多數據庫,建議主鍵采用程序生成的唯一值。
n 如果一個大型表需要頻繁的做insert/delete/update操作,同時也需要做高并發量的查詢,那么建議根據數據的訪問頻度對表作拆分,而后建立索引。
過程與函數
數據庫廠商為了凸現自身的優勢,都提供了豐富且個性化的過程與函數。
為了提升產品的伸縮性和數據無關性,請不要使用與特定數據庫相關的過程與函數,也不推薦采用Store Procedure,建議使用應用服務器的中間層業務對象。
字段/域的定義
n 盡量避免使用Blob,如果一定要用,請不要索引blob,并且不要定義多個blob。
n 不要使用日期字段,改用字符串char(19)替代,如:2008-12-09 12:22:08。
n 對于確定長度的串,請固定字段類型的長度,如char(80),不要采用varchar。
n 對于值類型字段,請使用對應的數據庫值類型,而不要用字符串。
三、Com和.Net互操作規范
.NET 技術已經成為微軟平臺的主流,但是在Win32時代開發了很多COM、DCOM組件,由于在開發COM組件時投入了大量的人力、財力,如何在.NET環境下重用這些COM組件就顯得更有意義。
.NET支持運行時通過COM、COM+、本地WinAPI調用與未托管代碼的雙向互操作性,要實現互操作性,必須首先引入.NET Framework的 System.Runtime.InteropServices命名空間。
C#的語法為:
using System.Runtime.InteropServices;
(1).NET訪問API
.NET允許C#訪問未托管的DLL的函數。如要調用Windows User32.dll的MessageBox函數:
int MessageBox(HWND hwnd,LPCTSTR lpText, LPCTSTR lpCaption,UINT uType)
可以聲明一個具有DLLImport屬性的static extern方法:
using System.Runtime.InteropServices;
[DllImport(“user32.dll”)]
static ertern int MessageBox(int hwnd,string text,string caption,int type);
然后在代碼里面直接調用就可以了。這里要注意在調用返回字符串的API中使用StringBuilder對象。
(2).NET訪問COM組件
從.NET調用COM組件比較容易,只要使用tlbimp.exe產生COM的裝配形式的WarpClass,然后在.NET項目中調用即可。
注意COM的類型信息通過Type Library文件描述,.NET裝配件是自描述的。Tlbimp的作用是從COM組件及其類型信息中產生自描述的裝配件。
1.編寫Com組件
編譯生成一個ComAccount.dll。
2. 產生.NET可訪問的包裝類(assembly),使用TlbImp.exe產生.NET裝配件。
TlbImp /out:NetAccount.dll ComAccount.dll
3.在.NET代碼中訪問
.NET代碼只需引用NetAccount.dll,就可以像訪問.NET的裝配件一樣訪問COM組件。
四、異常處理
異常處理的原則
n
轉載于:https://www.cnblogs.com/wghao/archive/2007/03/19/679447.html
總結
以上是生活随笔為你收集整理的.Net平台开发的技术规范与实践精华总结 (转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Phalanger---PHP的.NET
- 下一篇: Linux命令学习(三):文件操作命令(