中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折!

歡迎光臨中圖網 請 | 注冊
> >
框架設計指南:構建可復用.NET庫的約定、慣例與模式(第3版)

包郵 框架設計指南:構建可復用.NET庫的約定、慣例與模式(第3版)

出版社:電子工業出版社出版時間:2023-03-01
開本: 其他 頁數: 456
中 圖 價:¥97.5(6.5折) 定價  ¥150.0 登錄后可看到會員價
加入購物車 收藏
開年大促, 全場包郵
?新疆、西藏除外
本類五星書更多>

框架設計指南:構建可復用.NET庫的約定、慣例與模式(第3版) 版權信息

框架設計指南:構建可復用.NET庫的約定、慣例與模式(第3版) 本書特色

(1)從“要做”和“不要做”兩個視角彼此推翻和對抗,推演規范形成的終極思辨邏輯。 (2)針對語言構成剖析編碼規范, 提供一種上手一門新語言快速登堂入室的新思路。 (3)被譽為C# 世界的《Effective C++》,各路大神精彩點評是這本書的點睛之筆。 (4)廣泛流傳這樣一句話:. NET程序員如一生只讀三本書,這本書必定赫然在列。

框架設計指南:構建可復用.NET庫的約定、慣例與模式(第3版) 內容簡介

本書從*基本的設計原則和準則出發,全方位介紹了設計框架的很好實踐,是微軟工程師從.NET Framework開發伊始到現如今的.NET這二十來年間寶貴經驗的總結。 與第2版發布時的2008年相比,今天的軟件開發范式用翻天覆地來形容也不為過,容器化、云服務、跨平臺、DevOps等,都對今天的軟件開發者和框架設計者提出了更高的要求。本書對第2版的內容進行了全面的更新,以適應當下發展的潮流。本書雖然是面向.NET平臺上的框架設計的,但對其他平臺的框架設計同樣具有非凡的借鑒價值。通過閱讀本書,讀者可以了解到如何設計出一個對使用者而言簡單、易用且具有一致性的優秀框架。

框架設計指南:構建可復用.NET庫的約定、慣例與模式(第3版) 目錄

導論 1
1.1 設計精良的框架的特質 2
1.1.1 設計精良的框架是簡單的 2
1.1.2 設計精良的框架設計成本高昂 3
1.1.3 設計精良的框架充滿權衡 4
1.1.4 設計精良的框架會借鑒過往經驗 5
1.1.5 設計精良的框架旨在不斷發展 5
1.1.6 設計精良的框架是完整統一的 6
1.1.7 設計精良的框架是一致的 6
2 框架設計基礎 7
2.1 漸進式框架 9
2.2 框架設計基本原則 12
2.2.1 場景驅動設計原則 12
2.2.2 低門檻原則 18
2.2.3 對象模型自文檔化原則 22
2.2.4 分層架構原則 27
總結 29
3 命名準則 30
3.1 大小寫約定 30
3.1.1 標識符的大小寫規則 31
3.1.2 大寫首字母縮寫詞 33
3.1.3 大寫復合詞和常見術語 36
3.1.4 大小寫敏感 38
3.2 通用命名約定 38
3.2.1 詞匯選擇 39
3.2.2 使用簡寫和首字母縮寫詞 41
3.2.3 避免使用特定于編程語言的名稱 41
3.2.4 命名現有 API 的新版本 43
3.3 程序集、DLL 和包的命名 45
3.4 命名空間的命名 47
3.4.1 命名空間和類型名稱的沖突 48
3.5 類、結構體和接口的命名 50
3.5.1 泛型參數的命名 52
3.5.2 通用類型的命名 52
3.5.3 枚舉的命名 53
3.6 類型成員的命名 55
3.6.1 方法的命名 55
3.6.2 屬性的命名 55
3.6.3 事件的命名 57
3.6.4 字段的命名 58
3.7 命名參數 59
3.7.1 命名運算符重載參數 59
3.8 命名資源 60
總結 60
4 類型設計準則 61
4.1 類型和命名空間 63
4.2 在類和結構體之間選擇 66
4.3 在類和接口之間選擇 68
4.4 抽象類設計 75
4.5 靜態類設計 76
4.6 接口設計 77
4.7 結構體設計 79
4.8 枚舉設計 83
4.8.1 設計標記枚舉 89
4.8.2 添加枚舉值 92
4.9 嵌套類型 93
4.10 類型和程序集元數據 95
4.11 強類型字符串 97
總結 100
5 成員設計 101
5.1 一般成員設計準則 101
5.1.1 成員重載 101
5.1.2 顯式實現接口成員 111
5.1.3 在屬性和方法之間選擇 114
5.2 屬性設計 119
5.2.1 索引屬性設計 120
5.2.2 屬性變更通知事件 123
5.3 構造函數設計 124
5.3.1 類型構造函數準則 130
5.4 事件設計 132
5.5 字段設計 136
5.6 擴展方法 139
5.7 運算符重載 146
5.7.1 重載 operator== 149
5.7.2 轉換運算符 149
5.7.3 比較運算符 151
5.8 參數設計 152
5.8.1 在枚舉參數和布爾參數之間選擇 154
5.8.2 參數驗證 156
5.8.3 參數傳遞 159
5.8.4 參數數量可變的成員 162
5.8.5 指針參數 165
5.9 在成員簽名中使用元組 166
總結 171
6 可擴展性設計 172
6.1 可擴展性機制 172
6.1.1 非密封類 172
6.1.2 受保護的成員 174
6.1.3 事件和回調 175
6.1.4 虛成員 180
6.1.5 抽象(抽象類和接口) 181
6.2 基類 183
6.3 密封 185
總結 187
7 異常 188
7.1 拋出異常 192
7.2 選擇拋出正確的異常類型 196
7.2.1 錯誤消息設計 199
7.2.2 異常處理 200
7.2.3 包裝異常 205
7.3 使用標準異常類型 206
7.3.1 Exception和SystemException 206
7.3.2 ApplicationException 207
7.3.3 InvalidOperationException 207
7.3.4 ArgumentException、ArgumentNullException 和 ArgumentOutOfRangeException 207
7.3.5 NullReferenceException、IndexOutOfRangeException 和 AccessViolationException 208
7.3.6 StackOverflowException 208
7.3.7 OutOfMemoryException 209
7.3.8 ComException、SEHException和ExecutionEngineException 210
7.3.9 OperationCanceledException 和 TaskCanceledException 210
7.3.10 FormatException 210
7.3.11 PlatformNotSupportedException 211
7.4 設計自定義異常 211
7.5 異常和性能 212
7.5.1 測試者-執行者模式 212
7.5.2 Try模式 213
總結 216
8 使用準則 217
8.1 數組 217
8.2 特性 220
8.3 集合 223
8.3.1 集合參數 224
8.3.2 集合屬性和返回值 225
8.3.3 在數組和集合之間選擇 229
8.3.4 實現自定義集合 230
8.4 DateTime 和 DateTimeOffset 231
8.5 ICloneable 233
8.6 IComparable<T> 和 IEquatable<T> 234
8.7 IDisposable 236
8.8 Nullable<T> 236
8.9 Object 237
8.9.1 Object.Equals 237
8.9.2 Object.GetHashCode 238
8.9.3 Object.ToString 240
8.10 序列化 241
8.11 Uri 243
8.11.1 System.Uri 的實現準則 244
8.12 System.Xml 的使用 245
8.13 相等運算符 246
8.13.1 值類型上的相等運算符 248
8.13.2 引用類型上的相等運算符 248
9 通用設計模式 249
9.1 聚合組件 249
9.1.1 面向組件的設計 251
9.1.2 因子類型 253
9.1.3 聚合組件準則 254
9.2 異步模式 256
9.2.1 選擇異步模式 256
9.2.2 基于任務的異步模式 258
9.2.3 異步方法的返回類型 263
9.2.4 為現有的同步方法制作一個異步變體 265
9.2.5 異步模式一致性的實現準則 268
9.2.6 經典異步模式 272
9.2.7 基于事件的異步模式 273
9.2.8 IAsyncDisposable 273
9.2.9 IAsyncEnumerable<T> 273
9.2.10 await foreach 的使用準則 274
9.3 依賴屬性 276
9.3.1 依賴屬性設計 277
9.3.2 附加屬性的設計 279
9.3.3 依賴屬性校驗 280
9.3.4 依賴屬性變更通知 280
9.3.5 依賴屬性中的值強制 281
9.4 Dispose 模式 282
9.4.1 基本Dispose模式 284
9.4.2 可終結類型 290
9.4.3 限定作用域的操作 293
9.4.4 IAsyncDisposable 296
9.5 工廠 299
9.6 LINQ 支持 303
9.6.1 LINQ 概覽 303
9.6.2 實現 LINQ 支持的方法 304
9.7 可選功能模式 309
9.8 協變和逆變 312
9.8.1 逆變 315
9.8.2 協變 316
9.8.3 模擬協變模式 319
9.9 模板方法 321
9.10 超時 323
9.11 XAML 可讀類型 324
9.12 操作緩沖 326
9.12.1 數據轉換操作 338
9.12.2 向緩沖區中寫入固定大小或預定大小的數據 343
9.12.3 使用 Try-Write 模式向緩沖區中寫入數據 344
9.12.4 部分寫入緩沖區和OperationStatus 348
9.13 *后 353
附錄A C#編碼風格約定 354
A.1 通用風格約定 355
A.1.1 花括號的使用 355
A.1.2 空格的使用 357
A.1.3 縮進的使用 358
A.1.4 垂直空白 360
A.1.5 成員修飾符 361
A.1.6 其他 362
A.2 命名約定 367
A.3 注釋 368
A.4 文件組織 369
附錄B 過時的準則 371
B.3 命名準則中的過時準則 371
B.3.8 命名資源 371
B.4 類型設計準則中的過時準則 372
B.4.1 類型和命名空間 372
B.5 成員設計準則中的過時準則 374
B.5.4 事件的設計 374
B.7 異常設計準則中的過時準則 375
B.7.4 設計自定義異常 375
B.8 常見類型使用準則中的過時準則 376
B.8.10 序列化 376
B.9 通用設計模式中的過時準則 383
B.9.2 異步模式 383
B.9.4 Dispose 模式 394
附錄C API規范示例 398
附錄D 不兼容變更 403
D.1 修改程序集 404
D.1.1 改變程序集的名稱() 404
D.2 添加命名空間 405
D.2.1 添加與現有類型沖突的命名空間() 405
D.3 修改命名空間 405
D.3.1 修改命名空間的名稱或改變大小寫() 405
D.4 移動類型 405
D.4.1 通過 [TypeForwardedTo] 移動類型() 405
D.4.2 不通過 [TypeForwardedTo] 移動類型() 406
D.5 刪除類型 406
D.5.1 刪除類型() 406
D.6 修改類型 407
D.6.1 密封一個非密封的類型() 407
D.6.2 解封一個密封類型() 407
D.6.3 改變類型名稱的大小寫() 407
D.6.4 改變類型名稱() 407
D.6.5 改變類型的命名空間() 408
D.6.6 為結構體添加 readonly 修飾符() 408
D.6.7 從結構體中移除 readonly 修飾符() 408
D.6.8 為現有接口添加基接口() 408
D.6.9 為同一個泛型接口添加第二個聲明() 409
D.6.10 將類變更為結構體() 409
D.6.11 將結構體變更為類() 410
D.6.12 將 struct 變更為 ref struct() 410
D.6.13 將 ref struct 變更為(非ref)struct() 410
D.7 添加成員 411
D.7.1 通過 new 修飾符掩蓋基類成員() 411
D.7.2 添加抽象成員() 411
D.7.3 為非密封類型添加成員() 411
D.7.4 為非密封類型添加覆寫成員() 412
D.7.5 為結構體添加**個引用類型字段() 412
D.7.6 為接口添加成員() 412
D.8 移動成員 413
D.8.1 將成員移動到基類中() 413
D.8.2 將成員移動到基接口中() 413
D.8.3 將成員移動到派生類型中() 413
D.9 刪除成員 413
D.9.1 從非密封類型中刪除終結器() 413
D.9.2 從密封類型中刪除終結器() 414
D.9.3 刪除非覆寫成員() 414
D.9.4 刪除虛擬成員的override() 414
D.9.5 刪除抽象成員的override() 414
D.9.6 刪除或重命名可序列化類型的私有字段(?) 415
D.10 重載成員 415
D.10.1 為成員添加**個重載() 415
D.10.2 為引用類型參數添加可選參數重載(?) 416
D.11 更改成員簽名 416
D.11.1 重命名方法的參數() 416
D.11.2 添加或刪除方法的參數() 416
D.11.3 改變方法參數的類型() 417
D.11.4 重新排列具有不同類型的方法參數() 417
D.11.5 重新排列具有相同類型的方法參數() 417
D.11.6 改變方法的返回類型() 418
D.11.7 改變屬性的類型() 418
D.11.8 將成員的可見性從 public 變更為其他的可見性() 418
D.11.9 將成員的可見性從 protected 變更為 public() 419
D.11.10 將虛(或抽象)成員從 protected 變更為 public() 419
D.11.11 添加或刪除 static 修飾符() 419
D.11.12 改為(或不再)按引用傳遞參數() 419
D.11.13 改變按引用傳遞參數的風格() 420
D.11.14 為結構體的方法添加 readonly 修飾符() 420
D.11.15 從結構體的方法中刪除 readonly 修飾符() 420
D.11.16 將必需參數變更為可選參數() 421
D.11.17 將可選參數變更為必需參數(?) 421
D.11.18 改變可選參數的默認值() 421
D.11.19 改變常量字段的值() 421
D.11.20 將抽象成員變更為虛成員() 422
D.11.21 將虛成員變更為抽象成員() 422
D.11.22 將非虛成員變更為虛成員() 422
D.12 改變行為 423
D.12.1 將運行時錯誤異常變更為使用錯誤異常() 423
D.12.2 將使用錯誤異常變更為有用的行為() 423
D.12.3 改變方法返回值的類型(?) 423
D.12.4 拋出新的異常類型() 424
D.12.5 拋出新的異常類型,且它是從現有的異常類型中派生的() 424
D.13 *后 424

展開全部

框架設計指南:構建可復用.NET庫的約定、慣例與模式(第3版) 作者簡介

Krzysztof Cwalina 是微軟的軟件架構師,是 .NET框架團隊的初始成員之一,在職業生涯中,他成功設計了許多 .NET API。目前,他正致力于幫助微軟的不同團隊開發不同編程語言下的可復用 API。Krzysztof 擁有愛荷華大學計算機科學專業的學士學位和碩士學位。 Jeremy Barton 是 .NET Core Libraries 團隊的一名工程師。在使用 C# 設計和開發小型框架十幾年后,他于 2015 年加入 .NET 團隊,從事全新的 .NET Core 項目中密碼學相關類庫的跨平臺開發工作。Jeremy 畢業于羅斯-霍曼理工學院計算機科學和數學專業。 Brad Abrams 是微軟通用語言運行時(Common Language Runtime,CLR)和 .NET 框架團隊的初始成員之一。從 1998 年開始,他就一直在為 .NET 框架做設計。Brad 從構建基類庫(BCL)開始他的框架設計生涯,而這個庫后來成為 .NET框架的核心部分。此外,他還是通用語言規范(Common Language Specification,CLS)、.NET框架設計指南和.NET框架中ECMA/ISO通用語言基礎架構(Common Language Infrastructure,CLI)標準實現的主要作者。Brad 編寫和合著了多本出版物,包括Programming in the .NET Environment和.NET Framework Standard Library Annotated Reference的卷一和卷二。Brad 畢業于北卡羅來納州立大學計算機科學專業,你可以在他的博客上了解他最近的想法。Brad現在是Google的集團產品經理(Group Product Manager),他正在為 Google Assistant孵化新項目。 譯者簡介 王橋,2016年畢業于廈門大學,現在是微軟的軟件開發工程師。他在大學畢業后就一直深耕于 Web開發領域,在 TypeScript/JavaScript 和 . NET 等方面有豐富的編程實戰經驗。

商品評論(0條)
暫無評論……
書友推薦
本類暢銷
編輯推薦
返回頂部
中圖網
在線客服
主站蜘蛛池模板: 安徽净化工程设计_无尘净化车间工程_合肥净化实验室_安徽创世环境科技有限公司 | 快速门厂家批发_PVC快速卷帘门_高速门_高速卷帘门-广州万盛门业 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 专业深孔加工_东莞深孔钻加工_东莞深孔钻_东莞深孔加工_模具深孔钻加工厂-东莞市超耀实业有限公司 | 超声波气象站_防爆气象站_空气质量监测站_负氧离子检测仪-风途物联网 | 超声骨密度仪-动脉硬化检测仪器-人体成分分析仪厂家/品牌/价格_南京科力悦 | 低气压试验箱_高低温低气压试验箱_低气压实验箱 |林频试验设备品牌 | 广西教师资格网-广西教师资格证考试网| 周易算网-八字测算网 - 周易算网-宝宝起名取名测名字周易八字测算网 | 金属管浮子流量计_金属转子流量计厂家-淮安润中仪表科技有限公司 | 阻垢剂,反渗透阻垢剂,缓蚀阻垢剂-山东普尼奥水处理科技有限公司 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 杭州代理记账多少钱-注册公司代办-公司注销流程及费用-杭州福道财务管理咨询有限公司 | 2025福建平潭岛旅游攻略|蓝眼泪,景点,住宿攻略-趣平潭网 | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | H型钢切割机,相贯线切割机,数控钻床,数控平面钻,钢结构设备,槽钢切割机,角钢切割机,翻转机,拼焊矫一体机 | 艺术漆十大品牌_艺术涂料加盟代理_蒙太奇艺术涂料厂家品牌|艺术漆|微水泥|硅藻泥|乳胶漆 | 耐磨焊丝,堆焊焊丝,耐磨药芯焊丝,碳化钨焊丝-北京耐默公司 | 大学食堂装修设计_公司餐厅效果图_工厂食堂改造_迈普装饰 | 山东锐智科电检测仪器有限公司_超声波测厚仪,涂层测厚仪,里氏硬度计,电火花检漏仪,地下管线探测仪 | 恒压供水控制柜|无负压|一体化泵站控制柜|PLC远程调试|MCGS触摸屏|自动控制方案-联致自控设备 | 天津蒸汽/热水锅炉-电锅炉安装维修直销厂家-天津鑫淼暖通设备有限公司 | 上海风淋室_上海风淋室厂家_上海风淋室价格_上海伯淋 | 深圳公司注册-工商注册代理-注册公司流程和费用_护航财税 | 数控车床-立式加工中心-多功能机床-小型车床-山东临沂金星机床有限公司 | 盐城网络公司_盐城网站优化_盐城网站建设_盐城市启晨网络科技有限公司 | 上海租奔驰_上海租商务车_上海租车网-矢昂汽车服务公司 | 并离网逆变器_高频UPS电源定制_户用储能光伏逆变器厂家-深圳市索克新能源 | 银川美容培训-美睫美甲培训-彩妆纹绣培训-新娘化妆-学化妆-宁夏倍莱妮职业技能培训学校有限公司 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | 高铝轻质保温砖_刚玉莫来石砖厂家_轻质耐火砖价格 | 经济师考试_2025中级经济师报名时间_报名入口_考试时间_华课网校经济师培训网站 | 高效复合碳源-多核碳源生产厂家-污水处理反硝化菌种一长隆科技库巴鲁 | 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 神超官网_焊接圆锯片_高速钢锯片_硬质合金锯片_浙江神超锯业制造有限公司 | 郑州巴特熔体泵有限公司专业的熔体泵,熔体齿轮泵与换网器生产厂家 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 免联考国际MBA_在职MBA报考条件/科目/排名-MBA信息网 | 南汇8424西瓜_南汇玉菇甜瓜-南汇水蜜桃价格 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 |