国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > C# > 正文

C# 編碼好習慣,獻給所有熱愛c#的同志

2020-01-24 03:46:42
字體:
來源:轉載
供稿:網友
1. 避免將多個類放在一個文件里面。
2. 一個文件應該只有一個命名空間,避免將多個命名空間放在同一個文件里面。
3. 一個文件最好不要超過500行的代碼(不包括機器產生的代碼)。
4. 一個方法的代碼長度最好不要超過25行。
5. 避免方法中有超過5個參數的情況。使用結構來傳遞多個參數。
6. 每行代碼不要超過80個字符。
7. 不要手工的修改機器產生的代碼。
a) 如果需要編輯機器產生的代碼,編輯格式和風格要符合該編碼標準。
b) Use partial classes whenever possible to factor out the maintained portions.
8. 避免利用注釋解釋顯而易見的代碼。
a) 代碼應該可以自解釋。好的代碼由可讀的變量和方法命名因此不需要注釋。
9. Document only operational assumptions, algorithm insights and so on.
10. 避免使用方法級的文檔。
a) 使用擴展的API文檔說明之。
b) 只有在該方法需要被其他的開發者使用的時候才使用方法級的注釋。(在C#中就是///)
11. 不要硬編碼數字的值,總是使用構造函數設定其值。
12. 只有是自然結構才能直接使用const,比如一個星期的天數。
13. 避免在只讀的變量上使用const。如果想實現只讀,可以直接使用readonly。
public class MyClass
{
public readonly int Number;
public MyClass(int someValue)
{
Number = someValue;
}
public const int DaysInWeek = 7;
}
14. 每個假設必須使用Assert檢查
a) 平均每15行要有一次檢查(Assert)
using System.Diagnostics;
object GetObject()
{…}
object obj = GetObject();
Debug.Assert(obj != null);
15. 代碼的每一行都應該通過白盒方式的測試。
16. 只拋出已經顯示處理的異常。
17. 在捕獲(catch)語句的拋出異常子句中(throw),總是拋出原始異常維護原始錯誤的堆棧分配。
catch(Exception exception)
{
MessageBox.Show(exception.Message);
throw ; //和throw exception一樣。
}
18. 避免方法的返回值是錯誤代碼。
19. 盡量避免定義自定義異常類。
20. 當需要定義自定義的異常時:
a) 自定義異常要繼承于ApplicationException。
b) 提供自定義的序列化功能。
21. 避免在單個程序集里使用多個Main方法。
22. 只對外公布必要的操作,其他的則為internal。
23. Avoid friend assemblies, as it increases inter-assembly coupling.
24. Avoid code that relies on an assembly running from a particular location.
25. 使應用程序集盡量為最小化代碼(EXE客戶程序)。使用類庫來替換包含的商務邏輯。
26. 避免給枚舉變量提供顯式的值。
//正確方法
public enum Color
{
Red,Green,Blue
}
//避免
public enum Color
{
Red = 1,Green = 2,Blue = 3
}
27. 避免指定特殊類型的枚舉變量。
//避免
public enum Color : long
{
Red,Green,Blue
}
28. 即使if語句只有一句,也要將if語句的內容用大括號擴起來。
29. 避免使用trinary條件操作符。
30. 避免在條件語句中調用返回bool值的函數。可以使用局部變量并檢查這些局部變量。
bool IsEverythingOK()
{…}
//避免
if (IsEverythingOK ())
{…}
//替換方案
bool ok = IsEverythingOK();
if (ok)
{…}
31. 總是使用基于0開始的數組。
32. 在循環中總是顯式的初始化引用類型的數組。
public class MyClass
{}
MyClass[] array = new MyClass[100];
for(int index = 0; index < array.Length; index++)
{
array[index] = new MyClass();
}
33. 不要提供public 和 protected的成員變量,使用屬性代替他們。
34. 避免在繼承中使用new而使用override替換。
35. 在不是sealed的類中總是將public 和 protected的方法標記成virtual的。
36. 除非使用interop(COM+ 或其他的dll)代碼否則不要使用不安全的代碼(unsafe code)。
37. 避免顯示的轉換,使用as操作符進行兼容類型的轉換。
Dog dog = new GermanShepherd();
GermanShepherd shepherd = dog as GermanShepherd;
if (shepherd != null )
{…}
38. 當類成員包括委托的時候
a) Copy a delegate to a local variable before publishing to avoid concurrency race
condition.
b) 在調用委托之前一定要檢查它是否為null
public class MySource
{
public event EventHandler MyEvent;
public void FireEvent()
{
EventHandler temp = MyEvent;
if(temp != null )
{
temp(this,EventArgs.Empty);
}
}
}
39. 不要提供公共的事件成員變量,使用事件訪問器替換這些變量。
public class MySource
{
MyDelegate m_SomeEvent ;
public event MyDelegate SomeEvent
{
add
{
m_SomeEvent += value;
}
remove
{
m_SomeEvent -= value;
}
}
}
40. 使用一個事件幫助類來公布事件的定義。
41. 總是使用接口。
42. 類和接口中的方法和屬性至少為2:1的比例。
43. 避免一個接口中只有一個成員。
44. 盡量使每個接口中包含3-5個成員。
45. 接口中的成員不應該超過20個。
a) 實際情況可能限制為12個
46. 避免接口成員中包含事件。
47. 避免使用抽象方法而使用接口替換。
48. 在類層次中顯示接口。
49. 推薦使用顯式的接口實現。
50. 從不假設一個類型兼容一個接口。Defensively query for that interface.
SomeType obj1;
IMyInterface obj2;
/* 假設已有代碼初始化過obj1,接下來 */
obj2 = obj1 as IMyInterface;
if (obj2 != null)
{
obj2.Method1();
}
else
{
//處理錯誤
}
51. 表現給最終用戶的字符串不要使用硬編碼而要使用資源文件替換之。
52. 不要硬編碼可能更改的基于配置的字符串,比如連接字符串。
53. 當需要構建長的字符串的時候,使用StringBuilder不要使用string
54. 避免在結構里面提供方法。
a) 建議使用參數化構造函數
b) 可以重裁操作符
55. 總是要給靜態變量提供靜態構造函數。
56. 能使用早期綁定就不要使用后期綁定。
57. 使用應用程序的日志和跟蹤。
58. 除非在不完全的switch語句中否則不要使用goto語句。
59. 在switch語句中總是要有default子句來顯示信息(Assert)。
int number = SomeMethod();
switch(number)
{
case 1:
Trace.WriteLine("Case 1:");
break;
case 2:
Trace.WriteLine("Case 2:");
break;
default :
Debug.Assert(false);
break;
}
60. 除非在構造函數中調用其他構造函數否則不要使用this指針。
// 正確使用this的例子
public class MyClass
{
public MyClass(string message )
{}
public MyClass() : this("hello")
{}
}
61. 除非你想重寫子類中存在名稱沖突的成員或者調用基類的構造函數否則不要使用base來訪問基類的成員。
// 正確使用base的例子
public class Dog
{
public Dog(string name)
{}
virtual public void Bark( int howLong)
{}
}
public class GermanShepherd : Dog
{
public GermanShe pherd(string name): base (name)
{}
override public void Bark(int howLong)
{
base .Bark(howLong);
}
}
62. 基于模板的時候要實現Dispose()和Finalize()兩個方法。
63. 通常情況下避免有從System.Object轉換來和由System.Object轉換去的代碼,而使用強制轉換或者as操作符替換。
class SomeClass
{}
//避免:
class MyClass <T>
{
void SomeMethod(T t)
{
object temp = t;
SomeClass obj = (SomeClass)temp;
}
}
// 正確:
class MyClass <T> where T : SomeClass
{
void SomeMethod(T t)
{
SomeClass obj = t;
}
}
64. 在一般情況下不要定影有限制符的接口。接口的限制級別通??梢杂脧婎愋蛠硖鎿Q之。
public class Customer
{…}
//避免:
public interface IList <T> where T : Customer
{…}
//正確:
public interface ICustomerList : IList <Customer>
{…}
65. 不確定在接口內的具體方法的限制條件。
66. 總是選擇使用C#內置(一般的generics)的數據結構。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产成人久久精品77777| 国产免费福利| 中文字幕在线播放网址| 国产91在线视频蝌蚪| 99热最新网址| 国产天堂在线| 99久久精品免费观看国产| 国产精品国产三级国产试看| 国产亚av手机在线观看| 国产精品日日爱| 精品极品三级久久久久| 小说区乱图片区| 美女免费视频黄| 国产无遮挡又黄又爽免费网站| 中文字幕视频在线观看| 国产精品久久久精品a级小说| 91青青在线视频| 在线观看免费观看在线91| 亚洲私人影吧| 麻豆福利在线观看| av大片在线播放| 天天爱天天做色综合| 中文字幕2019第三页| 激情视频国产| av在线电影观看| 国产一二三区在线观看| 久热免费视频| 在线观看国产视频| 国产美女免费观看| 99re热在线观看| 国产女人在线视频| 日本一二区视频| 中文字幕4区| 黄色av网址在线免费观看| 69av二区| 国产成人精品男人的天堂538| 国产免费福利网站| 青青草观看免费视频在线| 在线中文视频| 国产福利在线播放| 国产丝袜精品丝袜| 中文字幕在线免费看| 不卡av免费观看| www.操操| av在线天堂| 亚洲一本大道| av免费在线播放| av中文天堂在线| 91午夜在线| 91免费日韩| 99久久国产视频| 精品av中文字幕在线毛片| 91涩漫在线观看c| 国产日本在线视频| 国产福利热线视频| 精品国产免费第一区二区| 97人人在线| 天海翼中文字幕| 久久亚洲国产成人亚| 四虎国产精品永久| 超碰国产在线| 国产天堂资源| 伊人久久青青草| 亚洲尤物在线视频| 久久久久久久久久久久网站| 福利资源在线久| 国产精品欧美韩国日本久久| 精精国产xxxx视频在线动漫| 久热中文字幕在线观看| 中文字幕在线观看日本| 尤物视频在线观看视频| 久草视频国产| 国产91在线视频蝌蚪| 操人视频91| 国产污污在线观看| 青青艹在线视频| 国产福利电影在线观看| www.狠狠| 国产视频1区| 日本高清不卡中文字幕| 国产一区二区影视| 亚洲精品在线播放视频| 最新天堂资源在线资源| av在线官网| 精品电影在线| 国产一二区视频| 国产中文字幕在线看| 国产天堂在线| 福利在线国产| 欧美黑人乱大交ⅹxxxxx| 国产青草视频在线观看视频| 日本视频在线观看一区二区三区| 国产色婷婷在线| 麻豆精品不卡国产免费看| 2019年中文字幕| 国产一二区在线| 最新中文字幕在线| 国产免费一级| 狠狠干五月天| 超碰免费在线播放| 羞羞视频在线观看免费| 精品入口蜜桃| 国产成在线观看免费视频| 国产一区二区影视| 国产三级视频在线播放线观看| 好男人社区在线视频| 久草.com| 五月综合激情在线| 狠狠干五月天| 丁香花高清在线观看完整版 | 69久久久久| 99在线播放| 欧美日韩不卡中文字幕在线| av在线免费播放网站| 开心激情五月婷婷| 国产精品视频福利一区二区| 国产超级va在线视频| 中文乱码字幕高清在线观看| 色吊丝av中文字幕| 欧美成人久久电影香蕉| 久久亚洲资源| 国产乱码在线| 精品欧美日韩一区二区| 免费不卡中文字幕视频 | 最近中文av字幕在线中文| 国产女王在线**视频 | 亚洲午夜久久久久中文字幕| 四虎成年永久免费网站| 激情综合丁香| 国产对白叫床清晰在线播放| 国产黄视频网站| av中文在线资源| 国产免费高清| av超碰在线| 午夜免费福利在线观看| 精品电影在线| 天天操天天操一操| 欧美性xxxx交| 精品国内自产拍在线视频| 午夜在线观看91| 91精品国产91久久久久久青草| 国产资源在线看| 日本福利在线| 在线看黄网站| 精品一区二区三区在线成人| 日韩亚洲一区中文字幕| 国产网站av| 福利视频在线导航| 日本福利午夜视频在线| 9999在线视频| 国产视频你懂的| 丁香视频免费观看| 亚洲色婷婷综合开心网| 91麻豆免费在线视频| 国产激情99| 国产精品黄页网站在线播放免费| 国产精品自产拍在线观看2019 | 国产91足控脚交在线观看| 国产在线二区| 久久精品蜜桃| 久草.com| 国产免费福利| 国产免费视频| 国产无套粉嫩白浆在线2022年| 国产鲁鲁视频在线观看特色| 超碰91在线| 黄色av网站在线| 成年网站免费入口在线观看| 青草视频在线播放| 成人av小说网| 中文字幕欧美日韩在线不卡| 国产九色porn网址| 中文字幕一区二区三区免费视频| 国产在线第一页| 国产精品一区二区三区视频网站 | 狠狠狠狠狠狠操| 国产在线观看色| 国产原创精品视频| 天天操天天曰| 国产精品一区在线看| 最近中文字幕av免费高清| 国产精品久久久久久福利| 99高清免费国产自产拍| 男女午夜视频在线观看| 中文字幕在线第一页| 在线a人片免费观看视频| 香蕉视频在线看| 狠狠干天天干| 91在线视频免费看| 久久久久国产精品嫩草影院| 99视频资源网| 亚洲字幕成人中文在线观看| 黄色在线视频观看网站| 国产黄色一级片| 免费观看久久久久| 国产精品被窝福利一区| 欧美精品久久久久久久小说| 国产经典三级在线| 碰草在线视频| 精品精品导航|