編寫高質量代碼

出版時間:2011-10  出版社:機械工業(yè)出版社  作者:陸敏技  頁數(shù):347  
Tag標簽:無  

內容概要

  本書是C#程序員進階修煉的必讀之作,包含的全部都是C#編碼的最佳實踐,從語言本身、程序的設計和架構、編碼規(guī)范和編程習慣等三大方面對C#程序員遇到的經典問題給出了經驗性的解決方案,為C#程序員如何編寫更高質量的C#代碼提供了157條極為寶貴的建議。對于每一個問題,不僅以建議的方式給出了被實踐證明為十分優(yōu)秀的解決方案,而且還給出了經常被誤用或被錯誤理解的不好的解決方案,從正反兩個方面進行了分析和對比。
  全書一共三個部分,第一部分專注于C#語言本身,一共89條建議,涵蓋了C#語言基本要素、集合、LINQ、泛型、委托、事件、資源管理、序列化、異常處理、異步、多線程、任務和并行編程等與C#語法相關的核心內容;第二部分重點講解了C#程序的設計和架構,一共32條建議,涉及成員設計、面向對象的類型設計、安全性設計等重要方面的內容;第三部分探討了C#的編碼規(guī)范及編程習慣,一共36條建議,包含C#命名規(guī)范、如何使代碼更整潔以及如何規(guī)范開發(fā)行為等方面的內容。
  本書是一本關于如何編寫高質量C#代碼的工具書,列舉的問題非常典型,給出的建議也非常實用,其中的每一條建議都有可能在我們編寫下一行代碼的時候被用到。你可以將此書擱置在案頭,以便有需要的時候隨時查閱。

作者簡介

  陸敏技,資深軟件工程師、項目經理和架構師,從事軟件開發(fā)工作近10年。尤其精通微軟技術,對C#、WPF、WCF、ASP.NET和.NET技術有十分深入的研究,曾參與和主導了大量的相關項目的架構和開發(fā)工作,積累了豐富的經驗。此外,他還非常擅長于分布式開發(fā)技術,而且有豐富的培訓和授課經驗?;钴S于博客園等技術社區(qū),樂于分享,有較高的知名度和社區(qū)影響力。

書籍目錄

前言
第一部分 語言篇
 第1章 基本語言要素
  建議1:正確操作字符串
  建議2:使用默認轉型方法
  建議3:區(qū)別對待強制轉型與as和is
  建議4:TryParse比Parse好
  建議5:使用int?來確保值類型也可以為null
  建議6:區(qū)別readonly和const的使用方法
  建議7:將0值作為枚舉的默認值
  建議8:避免給枚舉類型的元素提供顯式的值
  建議9:習慣重載運算符
  建議10:創(chuàng)建對象時需要考慮是否實現(xiàn)比較器
  建議11:區(qū)別對待==和Equals
  建議12:重寫Equals時也要重寫GetHashCode
  建議13:為類型輸出格式化字符串
  建議14:正確實現(xiàn)淺拷貝和深拷貝
  建議15:使用dynamic來簡化反射實現(xiàn)
 第2章 集合和LINQ
  建議16:元素數(shù)量可變的情況下不應使用數(shù)組
  建議17:多數(shù)情況下使用foreach進行循環(huán)遍歷
  建議18:foreach不能代替for
  建議19:使用更有效的對象和集合初始化
  建議20:使用泛型集合代替非泛型集合
  建議21:選擇正確的集合
  建議22:確保集合的線程安全
  建議23:避免將List作為自定義集合類的基類
  建議24:迭代器應該是只讀的
  建議25:謹慎集合屬性的可寫操作
  建議26:使用匿名類型存儲LINQ查詢結果
  建議27:在查詢中使用Lambda表達式
  建議28:理解延遲求值和主動求值之間的區(qū)別
  建議29:區(qū)別LINQ查詢中的IEnumerable和IQueryable
  建議30:使用LINQ取代集合中的比較器和迭代器
  建議31:在LINQ查詢中避免不必要的迭代
 第3章 泛型、委托和事件
  建議32:總是優(yōu)先考慮泛型
  建議33:避免在泛型類型中聲明靜態(tài)成員
  建議34:為泛型參數(shù)設定約束
  建議35:使用default為泛型類型變量指定初始值
  建議36:使用FCL中的委托聲明
  建議37:使用Lambda表達式代替方法和匿名方法
  建議38:小心閉包中的陷阱
  建議39:了解委托的實質
  建議40:使用event關鍵字為委托施加保護
  建議41:實現(xiàn)標準的事件模型
  建議42:使用泛型參數(shù)兼容泛型接口的不可變性
  建議43:讓接口中的泛型參數(shù)支持協(xié)變
  建議44:理解委托中的協(xié)變
  建議45:為泛型類型參數(shù)指定逆變
 第4章 資源管理和序列化
  建議46:顯式釋放資源需繼承接口IDisposable
  建議47:即使提供了顯式釋放方法,也應該在終結器中提供隱式清理
  建議48:Dispose方法應允許被多次調用
  建議49:在Dispose模式中應提取一個受保護的虛方法
  建議50:在Dispose模式中應區(qū)別對待托管資源和非托管資源
  建議51:具有可釋放字段的類型或擁有本機資源的類型應該是可釋放的
  建議52:及時釋放資源
  建議53:必要時應將不再使用的對象引用賦值為null
  建議54:為無用字段標注不可序列化
  建議55:利用定制特性減少可序列化的字段
  建議56:使用繼承ISerializable接口更靈活地控制序列化過程
  建議57:實現(xiàn)ISerializable的子類型應負責父類的序列化
 第5章 異常與自定義異常
  建議58:用拋出異常代替返回錯誤代碼
  建議59:不要在不恰當?shù)膱龊舷乱l(fā)異常
  建議60:重新引發(fā)異常時使用Inner Exception
  建議61:避免在finally內撰寫無效代碼
  建議62:避免嵌套異常
  建議63:避免“吃掉”異常
  建議64:為循環(huán)增加Tester-Doer模式而不是將try-catch置于循環(huán)內
  建議65:總是處理未捕獲的異常
  建議66:正確捕獲多線程中的異常
  建議67:慎用自定義異常
  建議68:從System.Exception或其他常見的基本異常中派生異常
  建議69:應使用finally避免資源泄漏
  建議70:避免在調用棧較低的位置記錄異常
 第6章 異步、多線程、任務和并行
  建議71:區(qū)分異步和多線程應用場景
  建議72:在線程同步中使用信號量
  建議73:避免鎖定不恰當?shù)耐綄ο?br />  建議74:警惕線程的IsBackground
  建議75:警惕線程不會立即啟動
  建議76:警惕線程的優(yōu)先級
  建議77:正確停止線程
  建議78:應避免線程數(shù)量過多
  建議79:使用ThreadPool或BackgroundWorker代替Thread
  建議80:用Task代替ThreadPool
  建議81:使用Parallel簡化同步狀態(tài)下Task的使用
  建議82:Parallel簡化但不等同于Task默認行為
  建議83:小心Parallel中的陷阱
  建議84:使用PLINQ
  建議85:Task中的異常處理
  建議86:Parallel中的異常處理
  建議87:區(qū)分WPF和WinForm的線程模型
  建議88:并行并不總是速度更快
  建議89:在并行方法體中謹慎使用鎖
第二部分 架構篇
 第7章 成員設計
  建議90:不要為抽象類提供公開的構造方法
  建議91:可見字段應該重構為屬性
  建議92:謹慎將數(shù)組或集合作為屬性
  建議93:構造方法應初始化主要屬性和字段
  建議94:區(qū)別對待override和new
  建議95:避免在構造方法中調用虛成員
  建議96:成員應優(yōu)先考慮公開基類型或接口
  建議97:優(yōu)先考慮將基類型或接口作為參數(shù)傳遞
  建議98:用params減少重復參數(shù)
  建議99:重寫時不應使用子類參數(shù)
  建議100:靜態(tài)方法和實例方法沒有區(qū)別
  建議101:使用擴展方法,向現(xiàn)有類型“添加”方法
 第8章 類型設計
  建議102:區(qū)分接口和抽象類的應用場合
  建議103:區(qū)分組合和繼承的應用場合
  建議104:用多態(tài)代替條件語句
  建議105:使用私有構造函數(shù)強化單例
  建議106:為靜態(tài)類添加靜態(tài)構造函數(shù)
  建議107:區(qū)分靜態(tài)類和單例
  建議108:將類型標識為sealed
  建議109:謹慎使用嵌套類
  建議110:用類來代替enum
  建議111:避免雙向耦合
  建議112:將現(xiàn)實世界中的對象抽象為類,將可復用對象圈起來就是命名空間
 第9章 安全性設計
  建議113:聲明變量前考慮最大值
  建議114:MD5不再安全
  建議115:通過HASH來驗證文件是否被篡改
  建議116:避免用非對稱算法加密文件
  建議117:使用SSL確保通信中的數(shù)據(jù)安全
  建議118:使用SecureString保存密鑰等機密字符串
  建議119:不要使用自己的加密算法
  建議120:為程序集指定強名稱
  建議121:為應用程序設定運行權限
第三部分 編碼規(guī)范及習慣
 第10章 命名規(guī)范
  建議122:以.為命名空間命名
  建議123:程序集不必與命名空間同名
  建議124:考慮在命名空間中使用復數(shù)
  建議125:避免用FCL的類型名稱命名自己的類型
  建議126:用名詞和名詞組給類型命名
  建議127:用形容詞組給接口命名
  建議128:考慮讓派生類的名字以基類名字作為后綴
  建議129:泛型類型參數(shù)要以T作為前綴
  建議130:以復數(shù)命名枚舉類型,以單數(shù)命名枚舉元素
  建議131:用PascalCasing命名公開元素
  建議132:考慮用類名作為屬性名
  建議133:用camelCasing命名私有字段和局部變量
  建議134:有條件地使用前綴
  建議135: 考慮使用肯定性的短語命名布爾屬性
  建議136:優(yōu)先使用后綴表示已有類型的新版本
  建議137:委托和事件類型應添加上級后綴
  建議138:事件和委托變量使用動詞或形容詞短語命名
  建議139:事件處理器命名采用組合方式
 第11章 代碼整潔
  建議140:使用默認的訪問修飾符
  建議141:不知道該不該用大括號時,就用
  建議142:總是提供有意義的命名
  建議143:方法抽象級別應在同一層次
  建議144:一個方法只做一件事
  建議145:避免過長的方法和過長的類
  建議146:只對外公布必要的操作
  建議147:重構多個相關屬性為一個類
  建議148:不重復代碼
  建議149:使用表驅動法避免過長的if和switch分支
  建議150:使用匿名方法、Lambda表達式代替方法
  建議151:使用事件訪問器替換公開的事件成員變量
  建議152:最少,甚至是不要注釋
  建議153:若拋出異常,則必須要注釋
 第12章 規(guī)范開發(fā)行為
  建議154:不要過度設計,在敏捷中體會重構的樂趣
  建議155:隨生產代碼一起提交單元測試代碼
  建議156:利用特性為應用程序提供多個版本
  建議157:從寫第一個界面開始,就進行自動化測試

媒體關注與評論

  “這是一本關于C#編碼最佳實踐的集大成之作,也是一本能指導C#程序員編寫出高質量代碼的指點迷津之作。全書從C#語法、程序的架構和設計、編碼規(guī)范和編程習慣3大方面為廣大的C#程序員們總結出了157條極富借鑒意義的建議,這些建議都是在實踐中被證明是解決C#編碼中疑難問題的最佳實踐。如果能掌握本書中的內容,不僅能加深對C#語言的理解和提升程序架構和設計方面的能力,而且還能規(guī)范我們的開發(fā)行為和習慣,讓我們成為一名優(yōu)秀的程序員,讓我們能編寫出更高質量的代碼。”  ——51CTO    “作為一名程序員,沒有人愿意留下一堆糟糕的代碼。如果我們編寫的代碼運行速度慢、消耗的內存多,而且還時不時地拋出一些莫名其妙的錯誤,我們一定會十分疑惑:我們的代碼到底怎么了?問題很明顯:我們編寫的代碼質量不高。本書從C#語言本身、程序的架構和設計、編碼規(guī)范和編程習慣等3大方面就如何編寫高質量的C#代碼給出了大量的寶貴建議。如果能理解并熟練使用本書中的知識,我們不僅能在一定程度上避免糟糕的代碼,而且還能大幅度提升編碼水平?!薄  R偉(資深微軟技術專家/ASP.NET MVP/暢銷書《ASP.NET 4權威指南》作者)    “學習任何一門編程語言,入門一般都不難,難的是進階和提高;讓程序跑起來不難,難的是如何讓程序跑得又快又好。作為一個程序員,我們在進階的路上總會遇到各種各樣的問題,有時候需要為這些問題付出代價,需要在不斷試錯和糾錯中積累經驗。很幸運的是,本書針對C#語法、程序的架構和設計、編碼規(guī)范和編程習慣等3大方面給出了157條寶貴的建議,每一條建議都來自于實踐和經驗的總結,每一條建議都能幫你避免在編碼時可能會犯下的錯誤,實用性極強。強烈推薦!”  ——姜曉東(資深微軟技術專家/暢銷書《C# 4.0權威指南》作者)

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    編寫高質量代碼 PDF格式下載


用戶評論 (總計97條)

 
 

  •   編寫高質量代碼:改善C#程序的157個建議。這本書是看到網上評論買的,好好學習?。。?!期待
  •   編寫高質量代碼:改善C#程序的157個建議 看看
  •   很不錯的書 ,對規(guī)范代碼編寫,提高程序執(zhí)行效率很有幫助,保障代碼嚴謹提高代碼質量
  •   保障代碼嚴謹提高代碼質量 很不錯的書 總結的問題和建議很實用
  •   正在讀中....,但確是一本規(guī)范自己代碼,一本值得采取建議的書籍
  •   對規(guī)范代碼編寫,提高程序執(zhí)行效率很有幫助。因為。。。所以。。。全都告訴你的一本書
  •   確實,離開了高質量,何談C,何談C#。讓我們繼續(xù)代碼...
  •   非常好的一本書,編寫程序前,應該先閱讀,養(yǎng)成好習慣,編程水平同編程風格同樣重要。
  •   不錯,可以改善編寫代碼細節(jié)
  •   對項目開發(fā)中的代碼優(yōu)化有很大幫助
  •   絕對好書,已經看完了,它讓你注意到很多細微的東西,提高程序的編程質量
  •   對寫代碼很有幫助,可以讓你了解一些代碼的原理性。
  •   本書的內容講的都是平時寫代碼中比較容易犯錯的東西
  •   看到這本書的時候,第一個感覺就是能夠提高我在編寫代碼過程中的一些陋習,仔細看了幾章后,感覺正合我意,要慢慢仔細看,好東西,推薦一下。
  •   文中提到了許多優(yōu)化代碼,提高執(zhí)行效率的方法
  •   花了一周把這本書大概看了一遍,發(fā)現(xiàn)有很多建議在工作中都用得到?,F(xiàn)在打算慢慢研究這本書
  •   提高編程質量的絕版好書。
  •   每一個建議都很受用,很實用。
  •   建議很好,其實都知道,但是真的做起來很難遵守
  •   書中的建議都是很好的建議,只有在平時的學習中慢慢體會了
  •   書很好,適合有經驗的程序員看,送貨速度快
  •   畢業(yè)2年了,做開發(fā)也有一段時間了,感覺自己已經到了一個瓶頸,想使勁往上提升,但是感覺自己腳底下的東西有點力不從心,所以決定給自己沖沖電,感覺這本書對自己來說幫助還是挺大的,看了20章了,感覺對我?guī)椭艽?。一些從不注意的小問題,現(xiàn)在看來還是十分重要的。也感覺自己在慢慢提升。進步的感覺真好。
  •   適合有C#編程基礎的人閱讀,編程入門易,進階難
  •   很適合已開始使用C#編程序的人員使用,極有幫助。從中可以學到很多編程時應注意的細節(jié)問題。
  •   送貨速度很快,書質量不錯,內容也很不錯。
  •   適合有基礎的程序員,但我最近都很少有時間閱讀了。
  •   花了一晚上掃了一遍,以前沒有注意到的細節(jié)問題都給掃盲了,此書非常不錯,講的均有理可尋,寫的也很深入,推薦大家都購買此書,定不后悔
  •   不錯的選擇,對程序的優(yōu)化有了更清晰的認識.
  •   寫的比較深入,不適合初學者,適合有一定經驗的人提高水平來讀。
  •   書不錯,不過內容有點泛
  •   這本書列出了很多值得學習和技術鞏固的東西。還沒看完,繼續(xù)看
  •   作者的經驗總結,學習借鑒之佳作。
  •   這個 書很有趣的。。 問題都是很經典的 受益匪淺
  •   書中內容很豐富,閱讀之后很受啟發(fā),很好
  •   適合C#進階者的書。。。
  •   內容很實用,積分有多少
  •   剛買 還沒來得及讀,大概看了一下 內容很實用
  •   書的內容不錯,但是物流太慢了,號稱當日訂,次日達,結果等了兩天,21號訂的書,23號才收到
  •   這本書還沒有看,因為最近被C#搞的煩死。。。真心不想看,還是有時間好好讀讀吧,即使不想看,工作還是要看。。。
  •   還沒有讀,大概看了下目錄,感覺正是自己需要的。以后慢慢看,作為床頭書,不可少啊
  •   像這樣的原創(chuàng)書,很少了。清華出的書就不要買了,全部都是**,一大段一大段的抄人家的。
  •   今天剛收到,大致的瀏覽了一下,感覺適合有一定基礎的人閱讀吧,對于平時有些不太注意、不太明白的地方,也有相應的內容,感覺看完還是會有一定的收獲的,總體來講不錯
  •   內容和送貨都很好??!
  •   需要點基礎!
  •   粗略看了下,還比較好
  •   太忙了剛看了幾頁,感覺還不錯,挺好的一本書
  •   外面還有一層塑料包裹感覺不錯
  •   物流速度很快,書是正版
  •   喜歡啊哈哈
  •   好評 很好很強大好評 很好很強大
  •   是本好書?。。。。。。。?!
  •   書收到了,有點事沒來評價,應該不錯,朋友推薦的。
  •   ewqewqewqewq
  •   不錯的書籍,正在看
  •   絕對正版好書,寫的不錯
  •   書不錯的啦!可以學習到很多!與C#聯(lián)系緊密
  •   對于寫C#的人來說有借鑒價值~
  •   感覺還不錯價格相對便宜些到貨很快
  •   這個商品不錯,就是很有深度!
  •   讀完再補?。?/li>
  •   正在學習中,講的很實際!
  •   ***e it very much. Re***mend to see it.
  •   書總體上還沒看完,但是已經感覺這錢花的值!
  •   一個個小的知識點,已經熟悉的可以溫故知新,不熟悉的可以從中學習。
  •   剛剛看了一些
  •   客服了在編碼過程中的一些壞毛病
  •   絕對的好書,初學都也好,老江湖也好,值得一讀。
  •   知識介紹的很詳細,我也學到了很多知識,學習,繼續(xù)學習
  •   期待很久的書籍了!受益匪淺啊!
  •   值得一讀 湊字
  •   這本書值得一看,尤其是有志于“咬文嚼字”****代碼的程序員
  •   適合有2、3年開發(fā)基礎的看,對代碼質量有提高。
  •   買回來后,經理看了說這本沒多少價值。。。 朋友看了也說。 不過想了解的仔細一點,可以看俺 ,通過比較掌握效率高的編碼方式。
  •   我一共定了4本書,感覺這4本書都是經過翻印的,紙張質量較差!不知道是不是當當自己翻印的,希望當當改進印刷質量!
  •   對于有過編程經驗的人來說會有一定的幫助,如果沒有基礎的話最好不要買了。
  •   注意編程技巧的修煉
  •   看了一章,感覺挺好,決定買回來細讀!

    不知道當當發(fā)貨的速度如何以及書的質量咋樣,用實際來驗證一下吧
  •   畢竟質量決定著收入...
  •   涉及到了工作中可能遇到的一些問題,值得一讀
  •   剛拿到書,還沒正式深入研究。大概翻閱了一下,內容還是很充實的。
  •   國人的書,而且是圈子里前輩的書,要頂頂,沒時間細看,等這個項目結束了,在細細拜讀,暫時沒有感覺。。。
  •   內容不錯,就是離散了點。
  •   內容不是太詳細,不過整體來說不錯
  •   大致翻了下,感覺還是有些東西挺有用的
  •   還在研究體會中.希望對自己學習有幫助
  •   嗯,適合學習一下!
  •   能學到平時忽略的東西
  •   良好~~~
  •   書還行,不怎么系統(tǒng)。
  •   發(fā)貨速度還可以,但是包裝有點簡陋,但是沒有損壞
  •   實例很多,確實值得人去注意
  •   書籍很好,看了大半,感覺受益匪淺
  •   買上本書的時候推薦出來的,順帶著買回來看看,講的東西不深,適合比較基礎的,比上本書《C#高效編程:改進C#代碼的50個行之有效的辦法(第2版)》差太多。
  •   大多數(shù)的建議在Jeffrey Richter的 CLR via C#中都有提及和闡述。
  •   不是貶低國人的水平,但是對于現(xiàn)在很多國人出爛書形成習慣恐懼,讓人不得不懷疑這本書是否是到處拼湊的東西了?還是看過再說吧
  •   暫時還沒有看完
  •   C#學習書籍
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網 手機版

京ICP備13047387號-7