C# 編碼通訊協定(二)

來源:互聯網
上載者:User

標籤:

  先八卦一下,昨天寫了C# 編碼通訊協定(一),得到了@h82258652的補充,感到非常欣慰,一是感覺他的觀點擴充了我的視野,豐富了我的看法,所以更堅定了我繼續寫部落格的想法,由於是五筆打字,經常不寫東西,有些字的字根都忘記了,所以通過寫部落格也可以多記些字根,二是決定把多年的一些東西分享出來,一起溝通交流,這樣也能夠共同進步,共同成長。

一、編碼實踐

1、一個檔案的代碼避免超過500行。當然這個在特殊情況下也是可以的,只是一個建設吧!

2、方法要避免超過25行。當然這個在特殊情況下也是可以的,只是一個建設吧!

3、每行不要超過80個字元。

4、不要手動編輯任何機器代碼。

5、避免對顯而易見的代碼作注釋,代碼應該是自解釋的,由可讀性強的變數和方法組成的好的代碼應該不需要注釋。

6、除了“0”與“1”, 不要用數值寫入程式碼,聲明一個常量代替。

7、僅對本來就是常量的值使用const修飾符,例如一周的天數。

8、避免對唯讀變更使用const,在此情況下,使用readonly修飾符:

public class MyClass{     public const int DaysInWeek = 7;     public readonly int Number;     public MyClass(int someValue)     {           Number = someValue;     }                 }    

9、僅捕捉你需要顯式處理的異常。

10、在拋出異常的catch語句中,總是拋出最初異常(或由最初異常構建的另一個異常),以保持最初錯誤的堆棧位置。

第一種:catch(Exception ex){    MessageBox.Show(ex.Message);    throw;     // 等同於拋出原始異常}第二種:catch(Exception ex){    MessageBox.Show(ex.Message);    throw ex;     // 這樣會吃掉異常點,重設堆棧中的異常起始點}第三種:catch{    throw;  // 可捕獲所有類型的異常}第四種:catch(Exception ex){    MessageBox.Show(ex.Message);    throw new Exception("經過進一步封裝的異常", ex);  // 經過進一步封裝的異常,第二個參數儲存了原來的異常資訊}推薦使用第一種用法

11、最小化應用程式的程式集代碼(即EXE用戶端程式集)。用類庫來包含商務邏輯。

12、避免顯式類型轉換。使用as操作符防禦性地進行轉換類型:

Dog dog = new GermanShepherd();GermanShepherd shepherd = dog as GermanShepherd;if (shepherd != null){   ...   }

13、調用委託前始終檢查委託是否為空白。

14、不要假定一種類型能支援某個介面。防禦性地為介面查詢是否支援該介面。

SomeType obj1;IMyInterface obj2;obj2 = obj1 as IMyInterface;if(obj2 != null){   obj2.Method1();   }else{    ...}

15、永遠不要寫入程式碼將呈現給使用者的字串,而是使用資源。

16、永遠不要寫入程式碼布署時可能修改的字串,例如連接字串。

17、用String.Empty代替"":

// 避免string name = "";//推薦string name = String.Empty;

18、當頻繁地使用一個字串超過4次,使用StringBuilder,不要使用string。

19、當提供一個靜態成員變數時,總是提供一個靜態建構函式。

20、除非在switch語句中跳轉,否則永遠不要用goto語句。

21、不要在使用泛型的代碼中對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;    }}

22、不要在泛型介面中定義約束條件。介面層級的約束常常可以用強型別代替:

public class Customer{...}// 避免public interface IList<T> where T : Customer{...}// 建議public interface ICustomerList : IList<Customer>

23、lock鎖私人唯讀靜態對象。不要使用lock (this)、lock (typeof (MyType)) 和 lock ("myLock")等。

 

C# 編碼通訊協定(二)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.