作品介紹

軟件框架設(shè)計(jì)的藝術(shù)


作者:[捷]JaroslavTulach     整理日期:2017-02-20 21:19:05


  本書(shū)幫助你解決API 設(shè)計(jì)方面的問(wèn)題,共分3 個(gè)部分,分別指出學(xué)習(xí)API 設(shè)計(jì)是需要進(jìn)行科學(xué)的訓(xùn)練的、Java 語(yǔ)言在設(shè)計(jì)方面的理論及設(shè)計(jì)和維護(hù)API 時(shí)的常見(jiàn)情況,并提供了各種技巧來(lái)解決相應(yīng)的問(wèn)題。
  本書(shū)作者是NetBeans 的創(chuàng)始人,也是NetBeans 項(xiàng)目最初的架構(gòu)師。相信在API 設(shè)計(jì)中遇到問(wèn)題時(shí),本書(shū)將不可或缺。
  本書(shū)適用于軟件設(shè)計(jì)人員閱讀。

作者簡(jiǎn)介
  Jaroslav Tulach NetBeans的創(chuàng)始人,也是NetBeans項(xiàng)目最初的架構(gòu)師。有著豐富的項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn),一直致力于如何提高開(kāi)發(fā)人員的設(shè)計(jì)技巧,從而保證了NetBeans項(xiàng)目的成功。

目錄:
  第一部分 理論與理由
  第1章 軟件開(kāi)發(fā)的藝術(shù)4
  1.1 理性主義,經(jīng)驗(yàn)主義以及無(wú)緒4
  1.2 軟件的演變過(guò)程6
  1.3 大型軟件8
  1.4 漂亮,真理和優(yōu)雅9
  1.5 更好的無(wú)緒12
  第2章 設(shè)計(jì)API的動(dòng)力之源14
  2.1 分布式開(kāi)發(fā)14
  2.2 模塊化應(yīng)用程序16
  2.3 交流互通才是一切20
  2.4 經(jīng)驗(yàn)主義編程方式22
  2.5 開(kāi)發(fā)第一個(gè)版本通常比較容易24
  第3章 評(píng)價(jià)API好壞的標(biāo)準(zhǔn)26
  3.1 方法和字段簽名26
  3.2 文件及其內(nèi)容27
  3.3 環(huán)境變量和命令行選項(xiàng)29
  3.4 文本信息也是API30
  3.5 協(xié)議32
  3.6 行為35
  3.7 國(guó)際化支持和信息國(guó)際化35
  3.8 API的廣泛定義37
  3.9 如何檢查API的質(zhì)量37
  3.9.1 可理解性37
  3.9.2 一致性38
  3.9.3 可見(jiàn)性39
  3.9.4 簡(jiǎn)單的任務(wù)應(yīng)該有簡(jiǎn)單的方案40
  3.9.5 保護(hù)投資40
  第4章 不斷變化的目標(biāo)42
  4.1 第一個(gè)版本遠(yuǎn)非完美42
  4.2 向后兼容43
  4.2.1 源代碼兼容43
  4.2.2 二進(jìn)制兼容44
  4.2.3 功能兼容——阿米巴變形蟲(chóng)效應(yīng)50
  4.3 面向用例的重要性52
  4.4 API設(shè)計(jì)評(píng)審55
  4.5 一個(gè)API的生命周期56
  4.6 逐步改善60
  第二部分 設(shè)計(jì)實(shí)戰(zhàn)
  第5章 只公開(kāi)你要公開(kāi)的內(nèi)容67
  5.1 方法優(yōu)于字段68
  5.2 工廠方法優(yōu)于構(gòu)造函數(shù)70
  5.3 讓所有內(nèi)容都不可更改71
  5.4 避免濫用setter方法72
  5.5 盡可能通過(guò)友元的方式來(lái)公開(kāi)功能73
  5.6 賦予對(duì)象創(chuàng)建者更多權(quán)利77
  5.7 避免暴露深層次繼承82
  第6章 面向接口而非實(shí)現(xiàn)進(jìn)行編程85
  6.1 移除方法或者字段87
  6.2 移除或者添加一個(gè)類(lèi)或者接口88
  6.3 向現(xiàn)有的繼承體系中添加一個(gè)接口或者類(lèi)88
  6.4 添加方法或者字段88
  6.5 Java中接口和類(lèi)的區(qū)別90
  6.6 弱點(diǎn)背后的優(yōu)點(diǎn)91
  6.7 添加方法的另一種方案92
  6.8 抽象類(lèi)有沒(méi)有用呢94
  6.9 要為增加參數(shù)做好準(zhǔn)備95
  6.10 接口VS.類(lèi)97
  第7章 模塊化架構(gòu)98
  7.1 模塊化設(shè)計(jì)的類(lèi)型100
  7.2 組件定位和交互103
  7.3 編寫(xiě)擴(kuò)展點(diǎn)116
  7.4 循環(huán)依賴(lài)的必要性117
  7.5 滿城盡是Lookup121
  7.6 Lookup的濫用126
  第8章 設(shè)計(jì)API時(shí)要區(qū)分其目標(biāo)用戶群129
  8.1 C和Java語(yǔ)言中如何定義API和SPI129
  8.2 API演進(jìn)不同于SPI演進(jìn)131
  8.3java.io.Writer這個(gè)類(lèi)從JDK 1.4到JDK 5的演進(jìn)131
  8.4 合理分解API143
  第9章 牢記可測(cè)試性147
  9.1 API設(shè)計(jì)和測(cè)試148
  9.2 規(guī)范的光環(huán)正在褪去151
  9.3 好工具讓API設(shè)計(jì)更簡(jiǎn)單153
  9.4 兼容性測(cè)試套件155
  第10章 與其他API協(xié)作158
  10.1 謹(jǐn)慎使用第三方API158
  10.2 只暴露抽象內(nèi)容162
  10.3 強(qiáng)化API的一致性164
  10.4 代理和組合168
  10.5 避免API的誤用176
  10.6 不要濫用JavaBeans那種監(jiān)聽(tīng)器機(jī)制180
  第11章 API具體運(yùn)行時(shí)的一些內(nèi)容184
  11.1 不要冒險(xiǎn)186
  11.2 可靠性與無(wú)緒189
  11.3 同步和死鎖191
  11.3.1 描述線程模型192
  11.3.2 Java Monitors中的陷阱193
  11.3.3 觸發(fā)死鎖的條件196
  11.3.4 測(cè)試死鎖201
  11.3.5 對(duì)條件競(jìng)爭(zhēng)進(jìn)行測(cè)試204
  11.3.6 分析隨機(jī)故障206
  11.3.7 日志的高級(jí)用途208
  11.3.8 使用日志記錄程序控制流程210
  11.4 循環(huán)調(diào)用的問(wèn)題215
  11.5 內(nèi)存管理218
  第12章 聲明式編程223
  12.1 讓對(duì)象不可變225
  12.2 不可變的行為229
  12.3 文檔兼容性230
  第三部分 日常生活
  第13章 極端的意見(jiàn)有害無(wú)益236
  13.1 API必須是漂亮的237
  13.2 API必須是正確的237
  13.3 API應(yīng)該盡量簡(jiǎn)單240
  13.4 API必須是高性能的242
  13.5 API必須絕對(duì)兼容242
  13.6 API必須是對(duì)稱(chēng)的245
  第14章 API設(shè)計(jì)中的矛盾之處247
  14.1 API設(shè)計(jì)中的自相矛盾248
  14.2 背后隱藏的工作251
  14.3 不要害怕發(fā)布一個(gè)穩(wěn)定的API252
  14.4 降低維護(hù)費(fèi)用255
  第15章 改進(jìn)API258
  15.1 讓有問(wèn)題的類(lèi)庫(kù)重新煥發(fā)活力259
  15.2 自覺(jué)地升級(jí)與無(wú)意識(shí)地被迫升級(jí)265
  15.3 可選的行為268
  15.4 相似API的橋接和共存274
  第16章 團(tuán)隊(duì)協(xié)作286
  16.1 在提交代碼時(shí)進(jìn)行代碼評(píng)審286
  16.2 說(shuō)服開(kāi)發(fā)人員為他們的API提供文檔290
  16.3 盡職盡責(zé)的監(jiān)控者292
  16.4 接受API的補(bǔ)丁297
  第17章 利用競(jìng)賽游戲來(lái)提升API設(shè)計(jì)技巧300
  17.1 概述300
  17.2 第一天301
  17.2.1 非public類(lèi)帶來(lái)的問(wèn)題304
  17.2.2 不可變性帶來(lái)的問(wèn)題304
  17.2.3 遺漏實(shí)現(xiàn)的問(wèn)題308
  17.2.4 返回結(jié)果可能不正確的問(wèn)題309
  17.2.5 第一天的解決方案310
  17.3 第二天313
  17.3.1 我想修正犯下的錯(cuò)誤316
  17.3.2 第二天的解決方案317
  17.4 第三天:評(píng)判日320
  17.5 也來(lái)玩下這個(gè)游戲吧327
  第18章 可擴(kuò)展Visitor模式的案例328
  18.1 抽象類(lèi)331
  18.2 為改進(jìn)做好準(zhǔn)備333
  18.3 默認(rèn)的遍歷334
  18.4 清楚地定義每個(gè)版本337
  18.5 單向改進(jìn)339
  18.6 使用接口時(shí)的數(shù)據(jù)結(jié)構(gòu)340
  18.7 針對(duì)用戶和開(kāi)發(fā)商的Visitor模式341
  18.8 三重調(diào)度343
  18.9 Visitor模式的圓滿結(jié)局345
  18.10 語(yǔ)法小技巧346
  第19章 消亡的過(guò)程348
  19.1 明確版本的重要性349
  19.2 模塊依賴(lài)的重要性349
  19.3 被移除的部分需要永久保留嗎352
  19.4 分解龐大的API352
  第20章 未來(lái)356
  20.1 原則性?xún)?nèi)容357
  20.2 無(wú)緒長(zhǎng)存358
  20.3 API設(shè)計(jì)方法論360
  20.4 編程語(yǔ)言的演變361
  20.5 教育的作用363
  20.6 共享365
  參考書(shū)目366





上一本:彼得·科恩木工基礎(chǔ) 下一本:柏林風(fēng)格小屋

作家文集

下載說(shuō)明
軟件框架設(shè)計(jì)的藝術(shù)的作者是[捷]JaroslavTulach,全書(shū)語(yǔ)言?xún)?yōu)美,行文流暢,內(nèi)容豐富生動(dòng)引人入勝。為表示對(duì)作者的支持,建議在閱讀電子書(shū)的同時(shí),購(gòu)買(mǎi)紙質(zhì)書(shū)。

更多好書(shū)