Effective C#系列 文章目錄

很老的一個系列了,不過寫的很好,發現園子裏沒有,轉載過來,方便大家。
 
第一部分是語言使用的基礎,而這是使用語言的基本功,也是平常最不注意的,養成好的習慣,有利於後期水平提高。

這部分包括11個單元,分別如下:
Item 1:
Always Use Properties Instead of Accessible Data Members

Effective C# 用屬性來訪問類的私有成員

Item 2:
Prefer readonly to const

Effective C# 定義常量的兩種方法

Item 3:
Prefer the is or as Operators to Casts

Effective C# 使用as和is操作符來做類型轉換

Item 4:
Use Conditional Attributes Instead of #if

Effective C# 使用Conditional屬性來代替IF/ENDIF程序塊

Item 5:
Always Provide ToString()

Effective C# 提供一個有意義的ToString函數

Item 6:
Distinguish Between Value Types and Reference Types

Effective C# 區分值類型和引用類型

Item 7:
Prefer Immutable Atomic Value Types

Effective C# 推薦使用不可改變的原子值類型

Item 8:
Ensure That 0 Is a Valid State for Value Types

Effective C# 確保“0”在值類型中是有效的

Item 9:
Understand the Relationships Among ReferenceEquals(), static Equals(),
nstance Equals()
Effective C# 區別和認識四個判等函數
   
Item 10:
Understand the Pitfalls of GetHashCode()

Effective C# 小心GetHashCode函數所存在的陷阱

Item 11:
Prefer foreach Loops

Effective C# 提倡使用foreach語句來進行循環操作

文章中提到一些好的方法,以及各個方法的細微之處,都是不錯的。不過建議大家如果有機會的話,還是買本原書來看。

如果文章有什麼不當之處,或者對文章有什麼好的建議的話,可以來信告訴我,我會在下一部分編寫過程中加以注意。至於下部分的進度,爲了保證文章的質量,所以我會把一週的文章數控制在三篇以內。

 

 

第二部的主題在於資源管理,.Net編寫的程序以託管程序居多,但是並不意味着可以不注意細節,合理的使用.Net提供的便利,加上好的習慣,有利於程序效率提高。

這部分包括7個單元,分別如下:

Item 12: Prefer Variable Initializers to Assignment Statements
Effective C# 推薦使用成員初始化語句

Item 13: Initialize Static Class Members with Static Constructors
Effective C# 使用靜態構造函數初始化靜態成員

Item 14: Utilize Constructor Chaining
Effective C# 使用構造函數初始化語句

Item 15: Utilize using and try/finally for Resource Cleanup
Effective C# 利用using和try-finally來釋放資源

Item 16: Minimize Garbage
Effective C# 儘量減少垃圾產生的數量

Item 17: Minimize Boxing and Unboxing
Effective C# 減少裝箱(Boxing)和拆箱(Unboxing)操作

Item 18: Implement the Standard Dispose Pattern
 
 
第三部部分:

C#語言爲你的設計介紹了一種新的語法,你可以選擇這種技術讓你的設計與其它的開發人員進行交流,這些開發人員可以維護,擴展或者是使用你設計的軟件。C#的所有類型都是生存在.Net環境下的,這個環境對於所有類型的兼容性做了一些好的假設。但如果你違反了這些假設,你就增加了類型不能正確工作的可能性。

這些原則不是那些已經出版了的軟件設計技術的概要,相反,這些原則醒目的給出了怎樣用不同的C#語言特性來表達最好的軟件設計意圖。C#語言的設計者添加了一些語言特性,用來更清楚的表達現代的軟件設計習慣。具體的語言特性有什麼傑出的地方是很微妙的,並且你經常會有很多可選的方法。更多的選擇在一開始可能只是更好的方案,但隨後,語言特性傑出的地方會展示出來,你會發現你有必要增強已經存在的程序。確保你能很好的理解這些原則,並且小心的應用它們,在你創建自己的系統時,注意那些最有可能增強(設計)的機會。

一些語法的改變會給你一些新的詞彙,用來描述一些你每天都要使用的習慣。屬性,索引器,事件,以及代理就是例子。它們與類和接口是不同的:類定義類型,接口聲明行爲。基類聲明類型,並且爲一些放在一起的相關類型定義一些常用的行爲。因爲垃圾回收器,另一些設計習慣已也經改變了;還有一些改變,是因爲大多數變量是引用類型。

這一章裏推薦的原則會幫助你爲你的設計選擇一些最自然的表達方法。這將讓你能設計出更容易維護,更容易擴展,並且更容易使用的軟件。
 
第四部分:

    創建二進制組件和創建類有很多相似之處:我們都在嘗試區分和分割功能。它們的區別在於二進制組件可以用來描述那些離散的功能。我們可以創建組件程序集來實現簡單的邏輯共享,跨語言編程和簡單的程序發佈。

      在.Net中程序集是一個組件包。每個程序集都可以被獨立的發佈和升級。升級一個已發佈程序集的簡易程度取決於對程序集中最小化耦合的處理是否得當。最小化耦合意味着我們不僅僅要最小化程序集中複雜的依賴關係,還要考慮便於升級版本。這章的主要內容就是如何創建易於使用、發佈和更新的程序集。


      .Net的運行環境可以支持由多個二進制組件構成的程序集。我們可以獨立更新其中的每一個。我們必須清楚CLR(公共語言運行庫)是如何尋找和裝載程序集的。在創建組件時我們必須遵循這種規則,否則就不能實現二進制組件的效果。下面的篇幅就是介紹這些的。


      CLR裝載器並不會在程序開始運行時就裝載所有的程序集引用。而是在運行需要時再由裝載器處理該程序集引用。這可能是由方法調用或者數據訪問。裝載器尋找程序集引用並裝載,實時編譯需要的IL。


      當CLR需要裝載一個程序集時,第一步時檢測需要裝載的文件。程序集的元數據中記錄了它所有的引用。這些記錄有強名稱和弱名稱之分。對於一個強名稱程序集這種記錄包含4個部分:程序集的名稱,版本號,支持的區域性和公鑰。對於非強名稱程序集來說就只有程序集的名稱。使用強名稱可以減少被惡意組件替換的可能性。強名稱讓我們可以使用配置文件設置所需組件的版本。


      在檢測到正確的程序集名稱和版本號之後,CLR會檢測這個程序集是否已經被裝載過。如果已經裝載,那麼就它就可以直接應用。否則CLR會繼續尋找該程序集。如果該程序集是強名稱的CLR首先在GAC(全局程序集緩存)中尋找。如果不在GAC中,裝載器會檢查配置文件中指定的文件夾。如果這個文件夾存在,那麼只在這個文件夾中搜索需要的程序集。如果沒有在這個文件夾中找到所需的程序集,那麼裝載失敗。


Effective C# 儘可能實現短小簡潔的函數


Effective C# 儘可能實現小尺寸、高內聚的程序集


Effective C# 限制類型的可見性


Effective C# 創建大粒度的Web API

 

 

 

第五部分:

我的同事,也是我的朋友Martin Shoemaker研究一個很嚴肅的問題,那就是:“我必須寫這樣的.Net代碼嗎?” 答案是,也希望是:不。你應該使用你手頭上有的,也是你會用的工具來幫助你寫代碼。

.Net框架是一個很豐富的類庫,你對框架學習的越多,你自己要寫的代碼就越少。框架庫會幫你完成很多工作。這一章就告訴你一些.Net框架裏最常用的一些技術。當你在.Net框架中有多個選擇時,這一章中的一些條款會幫助你選擇最好的。你可以使用一些已經存在的東西來寫你自己的類和算法,而不應該是與它們相牴觸。

這一章中的一些條款反映一些算法和類,當一些開發者可以輕鬆的使用.Net框架的時候,這是他們決心要自己寫的。他們之所以要自己寫這些,這是因爲,有些時候,.Net框架確實不清楚他們想要什麼。這時,我會告訴你如何來擴展已經存在的核心功能。還有一些時候,因爲他們不清楚核心時如何工作的;也有時候是因爲他們對性能有過高的要求。

即使是使用.框架裏所有可用的工具,也有很多的開發人員寧可創建他們自己的工具。千萬別寫這些代碼,特別是已經有人完成了的。

Effective C# 重寫優於事件處理器

Effective C# 合理使用.NET運行時診斷

Effective C# 使用標準配置機制

Effective C# 定製和支持數據綁定

Effective C# 使用.NET驗證

Effective C# 根據需要選用恰當的集合

Effective C# 避免過度使用反射

Effective C# 利用特性簡化反射

Effective C DataSet優於自定義結構

Effective C# 爲應用程序創建特定的異常類

 

 

 

第六部分:

有些內容不合適專門做一個目錄,但這並不是說它們不重要。對於每個人來說,理解代碼的安全訪問策略是很重要的,就像明白異常處理策略一樣。其它的一些推薦資料是關於經常變化的一些東西,因爲C#本身也是一門在發展的語言,要與最新的標準和資訊進行交流。這些變化值得注意一下,而且要爲這些變化做準備,它們會在以後溶入到你的工作中。

Effective C# 優先選擇強異常安全保證

Effective C# 優先選擇安全代碼

Effective C# 掌握相關工具與資源

Effective C# 爲C# 2.0做準備

Effective C# 瞭解ECMA標準

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章