Python 代碼整潔之道 (Practices of the Python Pro)

Dane Hillard 計湘婷 盧苗苗 田成平 譯

  • Python 代碼整潔之道 (Practices of the Python Pro)-preview-1
  • Python 代碼整潔之道 (Practices of the Python Pro)-preview-2
  • Python 代碼整潔之道 (Practices of the Python Pro)-preview-3
Python 代碼整潔之道 (Practices of the Python Pro)-preview-1

買這商品的人也買了...

商品描述

主要內容 組織大型Python項目 實現合適的抽象級別 編寫整潔並可重用的代碼 繼承和組合 測試和性能的註意事項

作者簡介

Dane Hillard是一位軟件工程師、Web開發人員和Python國際會議演講者,他感興趣的領域包括教育、生物技術和開源。 Dane編寫專業的Python軟件已有10年。

Dane在密歇根大學獲得計算機工程學士學位,輔修數學。作為一名軟件工程師,Dane曾在SAIC(現為Leidos)從事情報研究和開發工作,在Compendia Bioscience(現已併入賽默飛世爾科技公司)從事個性化癌症基因組學研究。 Dane目前為ITHAKA的首席Web應用程序開發人員,他主要專注於Python、Django的Web開發,以及用於學術研究的前端技術。

目錄大綱

第Ⅰ部分 為什麼學習Python
第1 章 Python 總覽 3
1.1 Python 是一種企業語言 5
1.1.1 時代在改變 5
1.1.2 我喜歡Python 的原因 5
1.2 Python 是一種教學語言 6
1.3 設計是一個過程 6
1.3.1 用戶體驗 8
1.3.2 你以前接觸過的情況 9
1.4 設計更好的軟件 10
1.4.1 軟件設計注意事項 10
1.4.2 “有機”增長的軟件 11
1.5 何時投資設計 13
1.6 新的開始 14
1.7 設計是平等的 15
1.8 如何使用本書 18
1.9 本章小結 19

第Ⅱ部分 設計基礎
第2 章 關注點分離 23
2.1 命名空間 24
2.1.1 命名空間和導入語句 25
2.1.2 導入的多重面紗 27
2.1.3 命名空間可避免衝突 29
2.2 Python 中的分離層級 31
2.2.1 函數 31
2.2.2 類 39
2.2.3 模塊 46
2.2.4 包 47
2.3 本章小結 49

第3 章 抽象和封裝 51
3.1 什麼是抽象 51
3.1.1 “黑匣子” 52
3.1.2 抽象就像洋蔥 53
3.1.3 抽象即簡化 56
3.1.4 分解實現抽象 57
3.2 封裝 58
3.2.1 Python 中的封裝構造 58
3.2.2 Python 中的私有變量 60
3.3 試一試 60
3.4 編程風格也是一種抽象 64
3.4.1 過程式編程 64
3.4.2 函數式編程 64
3.4.3 聲明式編程 66
3.5 類型、繼承和多態性 68
3.6 了解錯誤的抽象 70
3.6.1 方枘圓鑿 71
3.6.2 智者更智 71
3.7 本章小結 72

第4 章 設計高性能的代碼 73
4.1 穿越時空 74
4.1.1 複雜度有點複雜 74
4.1.2 時間複雜度 75
4.1.3 空間複雜度 79
4.2 性能與數據類型 81
4.2.1 常量時間的數據類型 81
4.2.2 線性時間的數據類型 82
4.2.3 在數據類型上操作的空間複雜度 82
4.3 讓它能夠運行,正確運行,快速運行 86
4.3.1 讓它運行 86
4.3.2 讓它正確運行 87
4.3.3 讓它快速運行 90
4.4 工具 91
4.4.1 timeit 模塊 92
4.4.2 CPU 性能分析 93
4.5 試一試 95
4.6 本章小結 96

第5 章 測試軟件 97
5.1 什麼是軟件測試 98
5.1.1 軟件是否按照要求運行 98
5.1.2 功能測試剖析 99
5.2 功能測試方法 100
5.2.1 手動測試 100
5.2.2 自動化測試 101
5.2.3 驗收測試 101
5.2.4 單元測試 103
5.2.5 集成測試 105
5.2.6 測試金字塔 105
5.2.7 回歸測試 106
5.3 事實陳述 107
5.4 使用unittest 進行單元測試 108
5.4.1 使用unittest 測試組織 108
5.4.2 使用unittest 運行測試 109
5.4.3 使用unittest 編寫第一個測試 109
5.4.4 使用unittest 編寫第一個集成測試 113
5.4.5 測試替身 116
5.4.6 試一試 118
5.4.7 編寫有趣的測試 121
5.5 使用pytest測試 121
5.5.1 使用pytest 測試組織 122
5.5.2 把unittest測試轉換為pytest 123
5.6 超越功能測試 124
5.6.1 性能測試 124
5.6.2 負載測試 125
5.7 測試驅動開發:入門 126
5.7.1 測試驅動開發是一種心態 126
5.7.2 測試驅動開發是一種哲學 126
5.8 本章小結 127

第Ⅲ部分 明確大型系統
第6 章 實踐中的關注點分離 131
6.1 命令行書籤應用程序 132
6.2 踏上Bark 之旅 133
6.3 初始代碼結構 134
6.3.1 持久層 136
6.3.2 業務邏輯層 148
6.3.3 表示層 153
6.4 本章小結 162

第7 章 可擴展性和靈活性 163
7.1 什麼是可擴展的代碼 163
7.1.1 添加新行為 164
7.1.2 修改現有行為 167
7.1.3 松耦合 168
7.2 解決僵化性 170
7.2.1 放手:控制反轉 171
7.2.2 細節決定成敗:依賴接口 175
7.2.3 抵抗熵:穩健性原則 176
7.3 擴展練習 177
7.4 本章小結 182

第8 章 有關繼承的規則(及例外) 183
8.1 過去編程中的繼承 183
8.1.1 銀彈 184
8.1.2 繼承的挑戰 184
8.2 當前編程中的繼承 186
8.2.1 繼承到底是為了什麼 186
8.2.2 可替代性 188
8.2.3 繼承的理想用例 189
8.3 Python 中的繼承 192
8.3.1 類型檢查 192
8.3.2 超類訪問 193
8.3.3 多重繼承和方法解析順序 194
8.3.4 抽象基類 198
8.4 Bark 中的繼承和組合 201
8.4.1 重構以使用抽象基類 201
8.4.2 對繼承工作進行最後的檢查 203
8.5 本章小結 204

第9 章 保持輕量級 205
9.1 類/函數/模塊應該有多大 206
9.1.1 物理度量 206
9.1.2 單一職責 207
9.1.3 代碼的複雜度 207
9.2 分解複雜度 212
9.2.1 提取配置 212
9.2.2 提取函數 215
9.3 分解類 218
9.3.1 複雜度初始化 218
9.3.2 提取類和轉發調用 221
9.4 本章小結 226

第10 章 實現松耦合 227
10.1 定義耦合 227
10.1.1 結締組織 228
10.1.2 緊耦合 229
10.1.3 松耦合 232
10.2 識別耦合 235
10.2.1 依戀情結 235
10.2.2 散彈式修改 237
10.2.3 抽象洩漏 237
10.3 Bark 中的耦合 238
10.4 尋址耦合 241
10.4.1 用戶消息傳遞 241
10.4.2 書籤持久性· 245
10.4.3 試一試 246
10.5 本章小結 250

第Ⅳ部分 下一步學習什麼
第11 章 全力以赴 253
11.1 現在怎麼辦 253
11.1.1 制訂計劃 254
11.1.2 執行計劃 256
11.1.3 跟踪進度 257
11.2 設計模式 259
11.2.1 Python 設計模式的起伏 261
11.2.2 需要了解的術語 261
11.3 分佈式系統 262
11.3.1 分佈式系統中的故障模式 263
11.3.2 尋址應用程序狀態 263
11.3.3 入門術語 264
11.4 進行Python深潛 264
11.4.1 Python 代碼樣式 264
11.4.2 語言特徵是模式 265
11.4.3 入門術語 266
11.5 你已經了解的內容 266
11.5.1 開發人員的心得體會 267
11.5.2 即將完結 268
11.6 本章小結 269

附錄A 安裝Python 271
A.1 我應該使用什麼版本的Python 271
A.2 “系統”Python 272
A.3 安裝其他版本的Python 272
A.3.1 下載官方Python 272
A.3.2 使用Anaconda下載 274
A.4 驗證安裝 274