日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

(转贴) C#编码标准--编码习惯

發布時間:2024/9/5 C# 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转贴) C#编码标准--编码习惯 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
看到一篇文章,里面列舉了自己也有的錯誤,轉貼之!

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.??在一般情況下不要定影有限制符的接口。接口的限制級別通常可以用強類型來替換之。

public class Customer

{…}

//避免:

public interface IList<T> where T : Customer??

{…}

//正確:

public interface ICustomerList : IList<Customer>??

{…}

65.??不確定在接口內的具體方法的限制條件。

66.??總是選擇使用C#內置(一般的generics)的數據結構。

轉載于:https://www.cnblogs.com/luck200803/archive/2007/12/17/1000916.html

總結

以上是生活随笔為你收集整理的(转贴) C#编码标准--编码习惯的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成年午夜视频 | 美女色诱男人激情视频 | 亚洲做受高潮 | 性欧美熟妇videofreesex | 东方av在线免费观看 | 国产视频在 | xxxx96| 恶虐女帝安卓汉化版最新版本 | 国产精品视频网 | 丨国产丨调教丨91丨 | 国产女同91疯狂高潮互磨 | 日本不卡中文字幕 | 99热99re6国产在线播放 | 一级色网站 | 欧美午夜三级 | 四虎国产精品免费 | 在线观看黄色av网站 | 亚洲一区二区在线电影 | 久久久亚洲综合 | 窝窝视频在线观看 | 国产一区二区视频在线观看 | 99热播精品| 国产破处av | 91免费国产| 久久精彩| 男人添女人荫蒂国产 | 不卡网av | 久月婷婷 | 欧美视频一区二区 | 精品久久久网站 | 亚洲性图av| 波多野结衣福利视频 | 国产精品无码毛片 | 欧美日韩精品一区 | 电影一区二区三区 | 日韩一区免费视频 | 久久人妻免费视频 | 亚洲激情第一页 | 天堂网久久 | 成年人视频在线免费看 | 日韩欧美爱爱 | 干极品美女 | juliaann欧美二区三区 | 狠狠的干狠狠的操 | 性欧美精品 | 快播视频在线观看 | 日韩欧美第一页 | 免费av在线 | aa亚洲| 中国一级大黄大黄大色毛片 | 亚洲国产91 | 免费观看一区二区三区视频 | 黄色工厂在线观看 | 亚洲一区www | 粉嫩av蜜桃av蜜臀av | 天天干夜夜拍 | 亚洲最大av在线 | 一区二区三区精品免费视频 | 黑人巨大精品 | 午夜性色福利视频 | 国内精品久久久久久久久 | 国产主播专区 | 亚洲欧美另类在线观看 | 亚洲超丰满肉感bbw 悠悠av | av自拍 | 欧美z○zo重口另类黄 | 人妻精油按摩bd高清中文字幕 | 九九热九九 | 国产一区二区波多野结衣 | 日韩欧美在线观看一区二区 | 国内一区二区视频 | 色播激情网 | 黑色丝袜吻戏亲胸摸腿 | 熟女俱乐部一区二区 | 国产日本精品视频 | 草逼国产 | 日韩乱码一区二区三区 | 久久久久99精品成人片三人毛片 | 色小姐综合网 | 亚洲色图另类小说 | 黄色网久久 | 福利视频91 | 激情在线视频 | 日韩视频一区二区在线观看 | 精品免费在线视频 | 欧美日韩一二 | 久久久男人的天堂 | 欧美色图一区二区三区 | 国产在线一区二区三区四区 | 日韩欧美综合视频 | 成人在线观看18 | 女生高潮视频在线观看 | 亚洲欧洲成人精品久久一码二码 | 黄色免费视频观看 | av导航网 | 欧美色图88 | 欧美成人一区二区三区 | 日韩精品人妻无码一本 | 国产精品天美传媒 |