注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計你真的會寫代碼嗎

你真的會寫代碼嗎

你真的會寫代碼嗎

定 價:¥89.80

作 者: [意] 馬爾科·法埃拉(Marco Faella) 著,雷威,李強 譯
出版社: 人民郵電出版社
叢編項: 圖靈程序設(shè)計叢書
標(biāo) 簽: 暫缺

ISBN: 9787115566348 出版時間: 2021-07-01 包裝: 平裝
開本: 16開 頁數(shù): 251 字?jǐn)?shù):  

內(nèi)容簡介

  《你真的會寫代碼嗎》的核心思想是通過對各方面的代碼質(zhì)量進行比較,使讀者了解經(jīng)驗豐富的開發(fā)者擁有的思維模式。為了展示軟件開發(fā)最佳實踐,作者對一個水容器示例進行多次重構(gòu),討論了18種實現(xiàn),分別從7個方面改進代碼質(zhì)量:時間效率、空間效率、監(jiān)控與可靠性、測試與可靠性、可讀性、線程安全、可復(fù)用性。在此過程中,作者還探討了與計算機科學(xué)、Java編程以及軟件工程相關(guān)的專業(yè)話題,這些知識都有助于讀者寫出更好的代碼。

作者簡介

  【作者簡介】馬爾科.法埃拉(Marco Faella)意大利那不勒斯費德里克二世大學(xué)副教授,面向本科生和研究生講授高級編程、軟件工程、面向?qū)ο笤O(shè)計、編譯器與程序分析、游戲設(shè)計等課程,同時為信息技術(shù)從業(yè)者開發(fā)和講授Java編程課。另外,他也是愛思唯爾、施普林格等旗下期刊的審稿人。【譯者簡介】雷威信公科技架構(gòu)師,曾在阿里巴巴中間件團隊任職。沉浸軟件行業(yè)十余年,熱衷于軟件架構(gòu)、研發(fā)效能、分布式、云原生等領(lǐng)域,相信技術(shù)能改變世界。李強信公科技CTO,浙江中金黃金集團前副總裁兼CTO,曾就職于美國道富銀行。技術(shù)涉獵廣泛,在產(chǎn)品設(shè)計開發(fā)、架構(gòu)設(shè)計、技術(shù)團隊管理等方面有豐富經(jīng)驗。另譯有《監(jiān)控的藝術(shù)》《擴展jQuery》等。

圖書目錄

第 一部分 準(zhǔn)備工作
第 1章 軟件質(zhì)量和待解決問題 2
1.1 軟件質(zhì)量 2
1.1.1 內(nèi)部質(zhì)量與外部質(zhì)量 3
1.1.2 功能性質(zhì)量與非功能性質(zhì)量 3
1.2 主要的外部軟件質(zhì)量 4
1.2.1 正確性 4
1.2.2 穩(wěn)健性 5
1.2.3 易用性 5
1.2.4 效率 5
1.3 主要的內(nèi)部軟件質(zhì)量 6
1.3.1 可讀性 6
1.3.2 可復(fù)用性 6
1.3.3 可測試性 6
1.3.4 可維護性 7
1.4 軟件質(zhì)量之間的關(guān)系 7
1.5 特殊的質(zhì)量 9
1.5.1 線程安全 9
1.5.2 簡潔性 9
1.6 演進示例:水容器系統(tǒng) 9
1.6.1 API 10
1.6.2 用例 11
1.7 數(shù)據(jù)的模型和表示 12
1.7.1 存儲水量 13
1.7.2 存儲連接 13
1.8 你好,容器(Novice) 15
1.8.1 字段和構(gòu)造函數(shù) 15
1.8.2 getAmount和addWater方法 17
1.8.3 connectTo方法 17
1.9 小結(jié) 19
1.10 擴展閱讀 19
第 2 章 Reference 的實現(xiàn) 20
2.1 代碼(Reference) 21
2.1.1 內(nèi)存布局圖 22
2.1.2 方法 25
2.2 內(nèi)存需求 26
2.3 時間復(fù)雜度 30
2.4 學(xué)以致用 32
2.5 小結(jié) 33
2.6 小測驗答案和練習(xí)答案 34
2.7 擴展閱讀 36
第二部分 軟件質(zhì)量
第3章 速度的要求:時間效率 40
3.1 常數(shù)時間內(nèi)完成加水(Speed1) 41
3.2 常數(shù)時間內(nèi)添加連接(Speed2) 43
3.2.1 用循環(huán)鏈表來表示容器組 43
3.2.2 延遲更新 46
3.3 最好的平衡:并查集算法(Speed3) 49
3.3.2 連接容器樹 52
3.3.3 最壞情況時間復(fù)雜度 53
3.3.4 攤銷時間復(fù)雜度 55
3.3.5 可調(diào)整大小數(shù)組的攤銷分析 56
3.4 比較各種實現(xiàn) 59
3.4.1 實驗 59
3.4.2 理論與實踐 60
3.5 來點兒新鮮的 61
3.5.1 快速插入 62
3.5.2 快速查詢 62
3.5.3 讓三個方法都變快 63
3.6 真實世界的用例 63
3.7 學(xué)以致用 64
3.8 小結(jié) 65
3.9 小測驗答案和練習(xí)答案 65
3.10 擴展閱讀 68
第4章 寶貴的內(nèi)存:空間效率 70
4.1 稍微擠一下(Memory1) 70
4.2 普通數(shù)組(Memory2) 75
4.3 棄用對象(Memory3) 78
4.3.1 無對象的API 79
4.3.2 字段和getAmount 方法 81
4.3.3 用一個工廠方法來創(chuàng)建容器 82
4.3.4 通過ID 連接容器 84
4.3.5 空間復(fù)雜度和時間復(fù)雜度 87
4.4 黑洞(Memory4) 87
4.5 空間和時間的權(quán)衡 90
4.6 來點兒新鮮的 92
4.6.1 重復(fù)對象少的情況 92
4.6.2 重復(fù)元素多的情況 93
4.7 真實世界的用例 94
4.8 學(xué)以致用 94
4.9 小結(jié) 96
4.10 小測驗答案和練習(xí)答案 96
4.11 擴展閱讀 100
第5章 有自我意識的代碼:通過監(jiān)控實現(xiàn)可靠性 102
5.1 契約式設(shè)計 102
5.1.1 前置條件和后置條件 102
5.1.2 不變式 104
5.1.3 正確性和穩(wěn)健性 105
5.1.4 檢查契約 106
5.1.5 更廣泛的情況 108
5.2 基于契約設(shè)計水容器 109
5.3 檢查契約的容器(Contracts) 111
5.3.1 檢查addWater方法的契約 114
5.4 檢查不變式的容器(Invariants) 117
5.4.1 檢查connectTo方法的不變式 118
5.4.2 檢查addWater方法的不變式 120
5.5 來點兒新鮮的 120
5.5.1 契約 121
5.5.2 一個基線版本實現(xiàn) 121
5.5.3 檢查契約 122
5.5.4 檢查不變式 123
5.6 真實世界的用例 124
5.7 學(xué)以致用 125
5.8 小結(jié) 126
5.9 小測驗答案和練習(xí)答案 126
5.10 擴展閱讀 131
第6章 別對我撒謊:通過測試保證可靠性 132
6.1 測試的基本概念 132
6.1.1 測試的覆蓋率 133
6.1.2 測試和契約式設(shè)計 133
6.1.3 JUnit 134
6.2 測試水容器(UnitTests) 136
6.2.1 初始化測試 136
6.2.2 測試addWater 138
6.2.3 測試connectTo方法 143
6.2.4 運行測試 144
6.2.5 衡量代碼覆蓋率 145
6.3 可測試性(Testable) 146
6.3.1 可控性 146
6.3.2 可觀察性 147
6.3.3 隔離:切斷依賴關(guān)系 148
6.4 來點兒新鮮的 149
6.4.1 提高可測試性 150
6.4.2 一個測試套件 151
6.5 真實世界的用例 153
6.6 學(xué)以致用 154
6.7 小結(jié) 155
6.8 小測驗答案和練習(xí)答案 155
6.9 擴展閱讀 160
第7章 讓代碼說話:可讀性 161
7.1 關(guān)于可讀性的一些觀點 161
7.1.1 企業(yè)編碼風(fēng)格規(guī)范 162
7.1.2 可讀性因素 163
7.2 結(jié)構(gòu)性的可讀性特征 164
7.2.1 控制流語句 164
7.2.2 表達式和局部變量 166
7.3 外部可讀性特征 167
7.3.1 注釋 167
7.3.2 命名 168
7.3.3 空白及縮進 169
7.4 可讀的容器(Readable) 169
7.4.1 用Javadoc描述類的頭部 170
7.4.2 整理connectTo方法 173
7.4.3 整理addWater方法 177
7.5 可讀性的終極思考 178
7.6 來點兒新鮮的 179
7.7 真實世界的用例 181
7.8 學(xué)以致用 181
7.9 小結(jié) 183
7.10 小測驗答案和練習(xí)答案 183
7.11 擴展閱讀 186
第8章 多個廚師一鍋飯:線程安全 188
8.1 線程安全面臨的挑戰(zhàn) 188
8.1.1 并發(fā)級別 190
8.1.2 水容器的并發(fā)策略 192
8.2 處理死鎖 193
8.2.1 原子的鎖序列 194
8.2.2 有序的鎖序列 195
8.2.3 一個隱藏的競爭條件 196
8.3 線程安全的水容器(ThreadSafe) 198
8.3.1 同步connectTo方法 198
8.3.2 同步addWater和getAmount方法 199
8.4 不可變性(Immutable) 201
8.4.1 API 202
8.4.2 實現(xiàn) 204
8.5 來點兒新鮮的 206
8.6 真實世界的用例 208
8.7 學(xué)以致用 209
8.8 小結(jié) 210
8.9 小測驗答案和練習(xí)答案 211
8.10 擴展閱讀 213
第9章 請重復(fù)利用:可復(fù)用性 215
9.1 確立邊界 215
9.2 通用框架 216
9.2.1 屬性API 219
9.2.2 可變收集器 220
9.2.3 將Attribute適配到函數(shù)接口 224
9.3 一個通用容器的實現(xiàn) 225
9.4 通用的考慮 227
9.5 復(fù)原水容器(Generic) 228
9.5.1 更新用例 228
9.5.2 設(shè)計具體的屬性 228
9.5.3 定義具體的水容器類 230
9.6 社交網(wǎng)絡(luò)的帖子 230
9.7 來點兒新鮮的 231
9.7.1 參數(shù)函數(shù)的接口 233
9.7.2 一個通信模式 235
9.8 真實世界的用例 237
9.9 學(xué)以致用 238
9.10 總結(jié) 240
9.11 小測驗答案和練習(xí)答案 240
9.12 擴展閱讀 245
附錄A 代碼高爾夫:簡潔性 246
附錄B 終極水容器類 249
列表:每一章中主要的類 252

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號