首 頁
手機(jī)版

編寫高質(zhì)量代碼改善c#程序的157個建議 陸敏技pdf掃描版

編寫高質(zhì)量代碼改善c#程序的157個建議是一本關(guān)于如何編寫高質(zhì)量C#代碼的工具書,由陸敏技編著。本書從語法、程序架構(gòu)和設(shè)計(jì),編碼習(xí)慣和編程規(guī)范3個層面深入探討,編寫高質(zhì)理c#代碼的技巧、禁忌和最佳實(shí)踐,為C#程序員如何編寫更高質(zhì)量的C#代碼提供了157條極為寶貴的建議。對于每一個問題,不僅以建議的方式給出了被實(shí)踐證明為十分優(yōu)秀的解決方案,而且還給出了經(jīng)常被誤用或被錯誤理解的不好的解決方案,從正反兩個方面進(jìn)行了分析和對比,能夠有效幫助程序員形成良好的編程習(xí)慣。


全書簡介

《編寫高質(zhì)量代碼改善c#程序的157個建議》全書一共三個部分,第一部分專注于C#語言本身,一共89條建議,涵蓋了C#語言基本要素、集合、LINQ、泛型、委托、事件、資源管理、序列化、異常處理、異步、多線程、任務(wù)和并行編程等與C#語法相關(guān)的核心內(nèi)容;第二部分重點(diǎn)講解了C#程序的設(shè)計(jì)和架構(gòu),一共32條建議,涉及成員設(shè)計(jì)、面向?qū)ο蟮念愋驮O(shè)計(jì)、安全性設(shè)計(jì)等重要方面的內(nèi)容;第三部分探討了C#的編碼規(guī)范及編程習(xí)慣,一共36條建議,包含C#命名規(guī)范、如何使代碼更整潔以及如何規(guī)范開發(fā)行為等方面的內(nèi)容。

編寫高質(zhì)量代碼改善c#程序的157個建議pdf章節(jié)目錄

前言

第一部分 語言篇

第1章 基本語言要素

建議1:正確操作字符串

建議2:使用默認(rèn)轉(zhuǎn)型方法

建議3:區(qū)別對待強(qiáng)制轉(zhuǎn)型與as和is

建議4:TryParse比Parse好

建議5:使用int來確保值類型也可以為null

建議6:區(qū)別readonly和const的使用方法

建議7:將0值作為枚舉的默認(rèn)值

建議8:避免給枚舉類型的元素提供顯式的值

建議9:習(xí)慣重載運(yùn)算符

建議10:創(chuàng)建對象時需要考慮是否實(shí)現(xiàn)比較器

建議11:區(qū)別對待==和Equals

建議12:重寫Equals時也要重寫GetHashCode

建議13:為類型輸出格式化字符串

建議14:正確實(shí)現(xiàn)淺拷貝和深拷貝

建議15:使用dynamic來簡化反射實(shí)現(xiàn)

第2章 集合和LINQ

建議16:元素?cái)?shù)量可變的情況下不應(yīng)使用數(shù)組

建議17:多數(shù)情況下使用foreach進(jìn)行循環(huán)遍歷

建議18:foreach不能代替for

建議19:使用更有效的對象和集合初始化

建議20:使用泛型集合代替非泛型集合

建議21:選擇正確的集合

建議22:確保集合的線程安全

建議23:避免將List〈T〉作為自定義集合類的基類

建議24:迭代器應(yīng)該是只讀的

建議25:謹(jǐn)慎集合屬性的可寫操作

建議26:使用匿名類型存儲LINQ查詢結(jié)果

建議27:在查詢中使用Lambda表達(dá)式

建議28:理解延遲求值和主動求值之間的區(qū)別

建議29:區(qū)別LINQ查詢中的IEnumerable〈T〉和IQueryable〈T〉

建議30:使用LINQ取代集合中的比較器和迭代器

建議31:在LINQ查詢中避免不必要的迭代

第3章 泛型、委托和事件

建議32:總是優(yōu)先考慮泛型

建議33:避免在泛型類型中聲明靜態(tài)成員

建議34:為泛型參數(shù)設(shè)定約束

建議35:使用default為泛型類型變量指定初始值

建議36:使用FCL中的委托聲明

建議37:使用Lambda表達(dá)式代替方法和匿名方法

建議38:小心閉包中的陷阱

建議39:了解委托的實(shí)質(zhì)

建議40:使用event關(guān)鍵字為委托施加保護(hù)

建議41:實(shí)現(xiàn)標(biāo)準(zhǔn)的事件模型

建議42:使用泛型參數(shù)兼容泛型接口的不可變性

建議43:讓接口中的泛型參數(shù)支持協(xié)變

建議44:理解委托中的協(xié)變

建議45:為泛型類型參數(shù)指定逆變

第4章 資源管理和序列化

建議46:顯式釋放資源需繼承接口IDisposable

建議47:即使提供了顯式釋放方法,也應(yīng)該在終結(jié)器中提供隱式清理

建議48:Dispose方法應(yīng)允許被多次調(diào)用

建議49:在Dispose模式中應(yīng)提取一個受保護(hù)的虛方法

建議50:在Dispose模式中應(yīng)區(qū)別對待托管資源和非托管資源

建議51:具有可釋放字段的類型或擁有本機(jī)資源的類型應(yīng)該是可釋放的

建議52:及時釋放資源

建議53:必要時應(yīng)將不再使用的對象引用賦值為null

建議54:為無用字段標(biāo)注不可序列化

建議55:利用定制特性減少可序列化的字段

建議56:使用繼承ISerializable接口更靈活地控制序列化過程

建議57:實(shí)現(xiàn)ISerializable的子類型應(yīng)負(fù)責(zé)父類的序列化

第5章 異常與自定義異常

建議58:用拋出異常代替返回錯誤代碼

建議59:不要在不恰當(dāng)?shù)膱龊舷乱l(fā)異常

建議60:重新引發(fā)異常時使用Inner Exception

建議61:避免在finally內(nèi)撰寫無效代碼

建議62:避免嵌套異常

建議63:避免“吃掉”異常

建議64:為循環(huán)增加Tester-Doer模式而不是將try-catch置于循環(huán)內(nèi)

建議65:總是處理未捕獲的異常

建議66:正確捕獲多線程中的異常

建議67:慎用自定義異常

建議68:從System.Exception或其他常見的基本異常中派生異常

建議69:應(yīng)使用finally避免資源泄漏

建議70:避免在調(diào)用棧較低的位置記錄異常

第6章 異步、多線程、任務(wù)和并行

建議71:區(qū)分異步和多線程應(yīng)用場景

建議72:在線程同步中使用信號量

建議73:避免鎖定不恰當(dāng)?shù)耐綄ο?/p>

建議74:警惕線程的IsBackground

建議75:警惕線程不會立即啟動

建議76:警惕線程的優(yōu)先級

建議77:正確停止線程

建議78:應(yīng)避免線程數(shù)量過多

建議79:使用ThreadPool或BackgroundWorker代替Thread

建議80:用Task代替ThreadPool

建議81:使用Parallel簡化同步狀態(tài)下Task的使用

建議82:Parallel簡化但不等同于Task默認(rèn)行為

建議83:小心Parallel中的陷阱

建議84:使用PLINQ

建議85:Task中的異常處理

建議86:Parallel中的異常處理

建議87:區(qū)分WPF和WinForm的線程模型

建議88:并行并不總是速度更快

建議89:在并行方法體中謹(jǐn)慎使用鎖

第二部分 架構(gòu)篇

第7章 成員設(shè)計(jì)

建議90:不要為抽象類提供公開的構(gòu)造方法

建議91:可見字段應(yīng)該重構(gòu)為屬性

建議92:謹(jǐn)慎將數(shù)組或集合作為屬性

建議93:構(gòu)造方法應(yīng)初始化主要屬性和字段

建議94:區(qū)別對待override和new

建議95:避免在構(gòu)造方法中調(diào)用虛成員

建議96:成員應(yīng)優(yōu)先考慮公開基類型或接口

建議97:優(yōu)先考慮將基類型或接口作為參數(shù)傳遞

建議98:用params減少重復(fù)參數(shù)

建議99:重寫時不應(yīng)使用子類參數(shù)

建議100:靜態(tài)方法和實(shí)例方法沒有區(qū)別

建議101:使用擴(kuò)展方法,向現(xiàn)有類型“添加”方法

第8章 類型設(shè)計(jì)

建議102:區(qū)分接口和抽象類的應(yīng)用場合

建議103:區(qū)分組合和繼承的應(yīng)用場合

建議104:用多態(tài)代替條件語句

建議105:使用私有構(gòu)造函數(shù)強(qiáng)化單例

建議106:為靜態(tài)類添加靜態(tài)構(gòu)造函數(shù)

建議107:區(qū)分靜態(tài)類和單例

建議108:將類型標(biāo)識為sealed

建議109:謹(jǐn)慎使用嵌套類

建議110:用類來代替enum

建議111:避免雙向耦合

建議112:將現(xiàn)實(shí)世界中的對象抽象為類,將可復(fù)用對象圈起來就是命名空間

第9章 安全性設(shè)計(jì)

建議113:聲明變量前考慮最大值

建議114:MD5不再安全

建議115:通過HASH來驗(yàn)證文件是否被篡改

建議116:避免用非對稱算法加密文件

建議117:使用SSL確保通信中的數(shù)據(jù)安全

建議118:使用SecureString保存密鑰等機(jī)密字符串

建議119:不要使用自己的加密算法

建議120:為程序集指定強(qiáng)名稱

建議121:為應(yīng)用程序設(shè)定運(yùn)行權(quán)限

第三部分 編碼規(guī)范及習(xí)慣

第10章 命名規(guī)范

建議122:以〈Company〉.〈Component〉為命名空間命名

建議123:程序集不必與命名空間同名

建議124:考慮在命名空間中使用復(fù)數(shù)

建議125:避免用FCL的類型名稱命名自己的類型

建議126:用名詞和名詞組給類型命名

建議127:用形容詞組給接口命名

建議128:考慮讓派生類的名字以基類名字作為后綴

建議129:泛型類型參數(shù)要以工作為前綴

建議130:以復(fù)數(shù)命名枚舉類型,以單數(shù)命名枚舉元素

建議131:用PascalCasing命名公開元素

建議132:考慮用類名作為屬性名

建議133:用camelCasing命名私有字段和局部變量

建議134:有條件地使用前綴

建議135: 考慮使用肯定性的短語命名布爾屬性

建議136:優(yōu)先使用后綴表示已有類型的新版本

建議137:委托和事件類型應(yīng)添加上級后綴

建議138:事件和委托變量使用動詞或形容詞短語命名

建議139:事件處理器命名采用組合方式

第11章 代碼整潔

建議140:使用默認(rèn)的訪問修飾符

建議141:不知道該不該用大括號時,就用

建議142:總是提供有意義的命名

建議143:方法抽象級別應(yīng)在同一層次

建議144:一個方法只做一件事

建議145:避免過長的方法和過長的類

建議146:只對外公布必要的操作

建議147:重構(gòu)多個相關(guān)屬性為一個類

建議148:不重復(fù)代碼

建議149:使用表驅(qū)動法避免過長的if和switch分支

建議150:使用匿名方法、Lambda表達(dá)式代替方法

建議151:使用事件訪問器替換公開的事件成員變量

建議152:最少,甚至是不要注釋

建議153:若拋出異常,則必須要注釋

第12章 規(guī)范開發(fā)行為

建議154:不要過度設(shè)計(jì),在敏捷中體會重構(gòu)的樂趣

建議155:隨生產(chǎn)代碼一起提交單元測試代碼

建議156:利用特性為應(yīng)用程序提供多個版本

建議157:從寫第一個界面開始,就進(jìn)行自動化測試

使用說明

1、下載并解壓,得出pdf文件

2、如果打不開本文件,請務(wù)必下載pdf閱讀器

3、安裝后,在打開解壓得出的pdf文件

4、雙擊進(jìn)行閱讀

收起介紹展開介紹
  • 下載地址
編寫高質(zhì)量代碼改善c#程序的157個建議 陸敏技pdf掃描版

有問題? 點(diǎn)此報(bào)錯

發(fā)表評論

0條評論