命名規範
1.利用pascal的方式定義型別、方法名和常量
複製c#**儲存**public class someclass
}2. 對於區域性變數和方法的引數使用駱駝命名法
複製c#**儲存**int number;
void mymethod(int somenumber)
3. 介面的名稱前面加上i
複製c#**儲存**inte***ce imyinte***ce
4. 在私有成員變數前面加上m_。對於m_後面的變數名使用駱駝命名法
複製c#**儲存**public class someclass
5. 對自定義的屬性類加上字尾attribute
6. 對自定義的異常類加上字尾exception
7. 方法的命名使用動詞——物件對。例如showdialog()
8. 有返回值的方法的命名中要有對返回值的描述。例如getobjectstate()
9. 使用帶有說明性的變數名
a)避免單字元的變數名。例如i或t。使用類似於index或temp這樣有意義的名字。
b)對於public或protected型別的變數避免使用匈牙利表示法
c)不要所寫單詞(例如用num取代number)
10. 總是使用c#預定義的型別而不是使用在system命名空間中的別名。例如:
使用object而不是object
使用string 而不是string
使用int而不是int32
11. 在使用泛型的時候,型別的首字母要大寫。當處理.net中的type型別的時候,保留type字尾。
複製c#**儲存**//正確
public class linklist
//避免
public class linklist
12. 使用有意義的名字定義命名空間。例如產品名或者公司名
13. 避免通過全限定方式使用型別名稱,使用using關鍵字。
14. 避免在乙個命名空間中使用using關鍵字
15. 把所有系統框架提供的命名空間組織到一起,把第三方提供的命名空間放到系統命名空間的下面
16. 使用**推導而不要顯示的例項化乙個**
17. 維護嚴格的**縮排。不要使用tabs或非標準的縮排,例如乙個空格。推薦的縮排市3到4個空格。
18. 在和你的**縮排處於同乙個級別處為該**新增注釋
19. 所有的注釋都應該通過拼寫檢查。注釋中的錯誤拼寫意味著開發進度的延緩
20. 所有類成員變數應該被宣告在類的頂部,並用乙個空行把他們和方法以及屬性的宣告區分開
21. 在最靠近乙個區域性變數被使用的地方宣告該區域性變數
22. 乙個檔名應該能夠反映它所對應的類名
23. 當使用乙個部分類並把該類分布到不同的檔案中時,在每乙個檔名末尾都加上該檔案實現的部分在類整體中扮演的作用。
24. 總是要把「
18. 避免利用返回值作為函式的錯誤**
19. 避免自定義異常類
20. 當自定義異常類的時候
a)讓你自定義的異常類從exception類繼承
b)提供自定義的序列化機制
21. 避免在乙個程式集中定義多個main()方法
22. 只把那些絕對需要的方法定義成public,而其他的方法定義成internal
23. 避免friend assermblies,因為這回增加程式集之間的耦合性
24. 避免讓你的**依賴於執行在某個特定地方的程式集
26. 避免顯示指定列舉的值
複製c#**儲存**//正確
public enum color
//錯誤
public enum color
27. 避免為列舉指定乙個型別
複製c#**儲存**//避免
public enum color : long
28. 對於if語句,總使用一對{}把下面的語句塊包含起來,哪怕只有一條語句也是如此
29. 避免使用三元條件操作符
30. 避免利用函式返回的boolean值作為條件語句。把返回值賦給乙個區域性變數,然後再檢測
31. 總是使用以零為基數的陣列
32. 總是使用乙個for迴圈顯示的初始化乙個引用成員的陣列
33. 使用屬性來替代public或protected型別的成員變數
34. 不要使用繼承下來的new操作符,使用override關鍵字覆寫new的實現
35. 在乙個非密封(non-sealed)類中,總是把那些public和protected的方法定義為virtual
36. 除非為了和其他語音進行互動,否則絕對不要使用不安全的**
37. 避免顯示型別轉換。使用as關鍵字安全的轉換到另乙個型別
複製c#**儲存**dog dog = new germanshepherd();
germanshepherd shepherd = dog as germanshepherd;
if (shepherd != null)
38. 在呼叫乙個**前,總是檢查它是否為null
39. 不要提供public的事件成員變數。改用event accessor
40. 總是使用介面
41. 介面和類中方法和屬性的比應該在2:1左右
42. 避免只有乙個成員的介面
43. 努力保證乙個介面有3~5個成員
44. 不要讓乙個介面中成員的數量超過20,而12則是更為實際的限制。
45. 避免在介面中包含事件
46. 當使用抽象類的時候,提供乙個介面
47. 在類繼承結構中暴露介面
48. 推薦使用顯示介面實現
49. 從來不要假設乙個型別支援某個介面。在使用前總是要詢問一下。
複製c#**儲存**sometype obj1;
imyinte***ce obj2;
//some code to initialize,then:
obj2 = obj1 as imyinte***ce;
if (obj2 != null)
else
50.不要硬編碼向使用者顯示的字串。要使用資源
51. 不要硬編碼那些可能會隨發布環境變化而變化的字串,例如資料庫連線字串
52. 使用string.empty取代""
53. 使用乙個長字串的時候,使用stringbuilder代替string
54. 避免在結構中提供方法a)引數化的建構函式是鼓勵使用的b)可以過載運算子
55. 當宣告了靜態成員的時候,總是要提供乙個靜態建構函式
56. 當早繫結可能的時候就盡量不要使用遲繫結
57. 讓你的應用程式支援跟蹤和日誌
58. 除了要在switch語句中實現**跳轉,不要使用goto關鍵字
59. 總在switch語句的default情形提供乙個斷言
複製c#**儲存**int number = somemethod();
switch (number)
60. 除了在乙個建構函式中呼叫其他的建構函式之外,不要使用this關鍵字
61. 不要使用base訪問基類的成員,除非你在呼叫乙個基類建構函式的時候要決議乙個子類的名稱衝突
62. 總是要在unchecked狀態下執行**,但是為了防止溢位或下溢操作,要果斷使用checked模式
專案設定和專案結構
1. 總是在4級警告上建立你的專案
2. 在發布版中,把警告當成錯誤來對待
3. 避免關閉編譯器的某些警告選項
4. 總是要在應用程式的配置檔案中顯示指定支援的執行時版本
5. 避免顯示進行clr程式集版本的重定向和繫結
6. 避免顯示的預處理定義(#define)。使用專案設定來定義條件編譯常量
7. 不要在assemblyinfo.cs中加入任何邏輯
8. 不要在assemblyinfo.cs之外的檔案中新增程式級屬性。
9. 提供assemblyinfo.cs中的所有資訊,例如公司名、描述和版權事項等
10. 同乙個解決方案中的程式集引用都應該使用相同路徑
11. 禁止在程式集之間使用迴圈引用
12. 避免多模組程式集
13. 避免利用異常視窗削弱異常處理
14. 堅持在同乙個解決方案中的所有程式集之間使用統一的版本號
15. 把所有解決方案的資訊存放到乙個共享的solutioninfo.cs檔案中
17. 修改visual studio 2005 的預設專案結構來適應你的專案規劃,並且對專案資料夾和檔案使用統一的結構
18. 乙個release發布應該包含除錯資訊
19. 總是對你的程式集進行簽名,包括你的客戶應用程式
C 編碼標準 二
先八卦一下,昨天寫了c 編碼標準 一 得到了 h82258652的補充,感到非常欣慰,一是感覺他的觀點擴充套件了我的視野,豐富了我的看法,所以更堅定了我繼續寫部落格的想法,由於是五筆打字,經常不寫東西,有些字的字根都忘記了,所以通過寫部落格也可以多記些字根,二是決定把多年的一些東西分享出來,一起溝通...
語音編碼標準
1.波形編碼 波形編碼是最簡單也是應用最早的語音編碼方法。最基本的一種就是pcm編碼,如g.711 建議中的a 律或 律。apcm dpcm和adpcm也屬於波形編碼的範疇,使用這些技術的標準有g.721 g.726 g.727 等。波形編碼具有實施簡單 效能優良的特點,不足是編碼頻寬往往很難再進一...
語音編碼標準
1.波形編碼 波形編碼是最簡單也是應用最早的語音編碼方法。最基本的一種就是pcm編碼,如g.711 建議中的a 律或 律。apcm dpcm和adpcm也屬於波形編碼的範疇,使用這些技術的標準有g.721 g.726 g.727 等。波形編碼具有實施簡單 效能優良的特點,不足是編碼頻寬往往很難再進一...