.NET良好編碼習(xí)慣二十條
來(lái)源:易賢網(wǎng) 閱讀:778 次 日期:2015-04-15 15:12:14
溫馨提示:易賢網(wǎng)小編為您整理了“.NET良好編碼習(xí)慣二十條”,方便廣大網(wǎng)友查閱!

1、不要硬編string/ numeric,可以使用一些常量代替。 (提高可讀性)

int Count;

Count = 100;

private static const int ZERO = 0;

if( Count == ZERO )

{

// 執(zhí)行一些操作

}

2、對(duì)于字符串比較-使用String. Empty ,而不是""。

3、不要聲明成員變量為 public 或者proteted,盡量使用private 成員變量和public/protected 屬性。 (修改)

4、當(dāng)我們要在循環(huán)操作字符串,使用StringBuilder,而不是字符串,示例如下。

不好的習(xí)慣:

String temp = String.Empty;

for( int i = 0 ; i<= 100; i++)

{

temp += i.ToString();

}好點(diǎn)的習(xí)慣:

StringBuilder sb = new StringBuilder();

for ( int i = 0 ; i<= 100; i++)

{

sb.Append(i.ToString());

}5、簡(jiǎn)單的操作,比起Collection更傾向使用Array。 (視情況,這里是建議)

6、比起ArrayList更傾向使用Generic Collection。 (視情況,這里是建議)

7、比起HashTable更傾向使用Generic Dictionary。 (視情況,這里是建議)

8、對(duì)于字符串的操作和存儲(chǔ),傾向于StringCollection和StringDictionary。 (視情況,這里是建議)

9、使用適合的數(shù)據(jù)類型。

例如:你想要判斷狀態(tài),使用bool比int要好。

不好的習(xí)慣:

int Check = 0;

if( Check == 0 )

{

// 執(zhí)行一些操作

}好點(diǎn)的習(xí)慣:

bool Check = false;

if(!Check)

{

// 執(zhí)行一些操作

}10、使用as做類型轉(zhuǎn)換的時(shí)候,對(duì)轉(zhuǎn)換后的值進(jìn)行null值判斷

class A

{

}

class B : A

{

}

B objB = new B();

A objA1 = (A) objB;

A objA2 = objB as A;

if( objA2 != null)

{

//執(zhí)行所需的操作

}11、創(chuàng)建wcf代理,可以使用using表達(dá)式。 (很多地方可以這樣使用)

using(Cerate the proxy)

{

//執(zhí)行所需的操作

} 12、對(duì)于昂貴的資源(例如Connection, File 等等),遵照'Acquire late, release early&rsquo; (盡量晚的獲取,盡量早的釋放)準(zhǔn)則。

例子:如果你想在數(shù)據(jù)操作時(shí),使用的SqlConnection對(duì)象,請(qǐng)?jiān)诜椒?jí)別,而不是在類級(jí)別創(chuàng)建實(shí)例。

代碼如下:

class MyData

{

public MyData()

{

}

public List<Customer> GetAllCustomer()

{

using (SqlConnection objConnection = new SqlConnection("Connection string"))

{

//執(zhí)行一些操作得到需要的數(shù)據(jù)

}

}

} 如果你想創(chuàng)建的類級(jí)別SqlConnection實(shí)例,確保您的類實(shí)現(xiàn)了IDisposable接口,并在Dispose()中清理SqlConnection實(shí)例。

代碼如下:

class MyData : IDisposable

{

SqlConnection objConnection ;

public MyData()

{

objConnection = new SqlConnection("Connection string");

}

public List<Customer> GetAllCustomer()

{

//通過(guò)objConnection得到需要的數(shù)據(jù)

}

public void Dispose()

{

//清理SqlConnection實(shí)例

if( objConnection != null )

{

if( objConnection.State == ConnectionState.Open)

{

objConnection.Close();

}

}

}

}13、如果你不想別人擴(kuò)展你的類功能,使用&lsquo;sealed&rsquo;。

14、避免為每個(gè)類都聲明&lsquo;destructor&rsquo; ,因?yàn)樗鼤?huì)增加不需要常駐內(nèi)存的類的生命周期。

15、相對(duì)manual threading,更傾向用Thread Pool 。

16、在循環(huán)內(nèi)不要去調(diào)用其它方法。 (call function 有性能損耗)

例如:

不好的習(xí)慣:

for( int i = 0; i<= 100; i++)

{

Calculate(i);

} 好點(diǎn)的習(xí)慣:

for( int i = 0; i<= 100; i++)

{

//直接寫(xiě)Calculate邏輯。

}17、不要在循環(huán)內(nèi)處理異常,而是將循環(huán)處理的邏輯放在try/catch里面

不好的習(xí)慣:

for(int i = 0 ; i<= 100; i++)

{

try

{

}

catch(Exception ex)

{

throw ex;

}

}好點(diǎn)的習(xí)慣:

try

{

for(int i = 0 ; i<= 100; i++)

{

}

}

catch(Exception ex)

{

throw ex;

}

18、不用通過(guò)異常處理應(yīng)用程序的邏輯

例如:

不好的習(xí)慣:

try

{

int x,y,z;

x = 0;

y = 10;

z = y/x;

}

catch(DevideByZeroException ex)

{

Throw ex;

}好點(diǎn)的習(xí)慣:

try

{

int x,y,z;

x = 0;

y = 10;

if( x != 0 )

{

z = y/x;

}

}

catch(Exception ex)

{

}19、相對(duì)for/while ,傾向使用foreach循環(huán)。[更正]

20、使用多層架構(gòu)的系統(tǒng),層與層之間的交互,比起DataSet/DataTables更傾向于使用對(duì)象傳遞數(shù)據(jù)。

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:.NET良好編碼習(xí)慣二十條
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)