《編寫整潔的Python代碼》是2021年人民郵電出版社出版的圖書,作者是[西]馬里亞諾·阿那亞(Mariano Anaya)。
基本介紹
- 書名:編寫整潔的Python代碼
- 作者:[西]馬里亞諾·阿那亞(Mariano Anaya)
- 出版社:人民郵電出版社
- ISBN:9787115548023
內容簡介,圖書目錄,作者簡介,
內容簡介
本書介紹Python軟體工程的主要實踐和原則,旨在幫助讀者編寫更易於維護和更整潔的代碼。全書共10章:第1章介紹Python語言的基礎知識和搭建Python開發環境所需的主要工具;第2章描述Python風格代碼,介紹Python中的*個習慣用法;第3章總結好代碼的一般特徵,回顧軟體工程中的一般原則;第4章介紹一套面向對象軟體設計的原則,即SOLID原則;第5章介紹裝飾器,它是Python的*特性之一;第6章探討描述符,介紹如何通過描述符從對象中獲取更多的信息;第7章和第8章介紹生成器以及單元測試和重構的相關內容;第9章回顧Python中*常見的設計模式;第10章再次強調代碼整潔是實現良好架構的基礎。
本書適合所有Python編程愛好者、對程式設計感興趣的人,以及其他想學習更多Python知識的軟體工程的從業人員。
圖書目錄
第 1章 簡介、代碼格式和工具 1
1.1 代碼整潔的意義 2
1.2 代碼整潔的重要性 2
1.2.1 代碼格式化在代碼整潔中的作用 3
1.2.2 在項目中遵循編碼風格準則 4
1.3 文檔字元串和註解 6
1.3.1 文檔字元串 6
1.3.2 註解 9
1.3.3 註解是否會替代文檔字元串 11
1.3.4 配置用於實施基本質量控制的工具 12
1.4 小結 16
第 2章 Python風格代碼 17
2.1 索引和切片 18
2.2 上下文管理器 21
2.3 對象的屬性、特性和不同類型的方法 26
2.3.1 Python中的下劃線 27
2.3.2 屬性 29
2.4 可疊代對象 31
2.4.1 創建可疊代對象 32
2.4.2 創建序列 34
2.5 容器對象 36
2.6 對象的動態屬性 37
2.7 可調用對象 39
2.8 魔法方法概述 40
2.9 Python中的警告 41
2.9.1 可變的默認參數 41
2.9.2 擴展內置類型 42
2.10 小結 44
第3章 好代碼的一般特徵 45
3.1 契約式設計 46
3.1.1 前置條件 47
3.1.2 後置條件 48
3.1.3 Python的契約 48
3.1.4 設計契約:結論 49
3.2 防錯性程式設計 50
3.2.1 錯誤處理 50
3.2.2 在Python中使用斷言 57
3.3 關注點分離 58
3.4 常用縮略詞 60
3.4.1 DRY和OAOO 60
3.4.2 YAGNI 62
3.4.3 KIS 63
3.4.4 EAFP和LBYL 64
3.5 組合和繼承 65
3.5.1 什麼時候繼承是一個好的決定 66
3.5.2 反模式的繼承 67
3.5.3 Python中的多重繼承 69
3.6 函式和方法中的參數 72
3.6.1 Python函式的參數是如何工作的 73
3.6.2 函式中參數的數量 77
3.7 關於軟體設計良好實踐的結束語 80
3.7.1 軟體的正交性 80
3.7.2 構建代碼 82
3.8 小結 83
第4章 SOLID原則 84
4.1 單一職責原則 84
4.1.1 一個有太多職責的類 85
4.1.2 分配責任 86
4.2 打開 關閉原則 87
4.2.1 不遵循打開 關閉原則的可維護性風險的示例 88
4.2.2 重構事件系統以獲得可擴展性 90
4.2.3 擴展事件系統 92
4.2.4 關於OCP的結束語 94
4.3 里氏替換原則 94
4.3.1 使用工具檢測LSP問題 95
4.3.2 更微妙的LSP違規案例 97
4.3.3 關於LSP需要注意的一些點 100
4.4 接口隔離原則 100
4.4.1 提供太多信息的接口 102
4.4.2 接口越小越好 102
4.4.3 接口應該多小 103
4.5 依賴倒置原則 103
4.5.1 一個嚴格依賴的案例 104
4.5.2 倒置依賴 104
4.6 小結 106
第5章 用裝飾器改進代碼 107
5.1 Python中的裝飾器是什麼 107
5.1.1 裝飾器函式 108
5.1.2 裝飾類 109
5.1.3 其他類型的裝飾器 113
5.1.4 將參數傳遞給裝飾器 114
5.1.5 充分利用裝飾器 117
5.2 有效的裝飾:避免常見的錯誤 118
5.2.1 保存關於原始包裝對象的數據 118
5.2.2 處理裝飾器中的副作用 121
5.2.3 創建始終有效的裝飾器 125
5.3 裝飾器的DRY原則 128
5.4 裝飾器和關注點分離 129
5.5 好的裝飾器的相關分析 130
5.6 小結 132
第6章 用描述符從對象中獲取更多信息 133
6.1 初探描述符 133
6.1.1 描述符背後的機制 133
6.1.2 研究描述符協定中的每個方法 136
6.2 描述符的類型 142
6.2.1 非數據描述符 143
6.2.2 數據描述符 145
6.3 描述符的實際套用 147
6.3.1 描述符的一種套用 147
6.3.2 實現描述符的不同形式 151
6.3.3 關於描述符的更多考慮 154
6.4 分析描述符 158
6.4.1 Python內部如何使用描述符 158
6.4.2 在裝飾器中實現描述符 163
6.5 小結 164
第7章 使用生成器 165
7.1 技術要求 165
7.2 創建生成器 165
7.2.1 初探生成器 166
7.2.2 生成器表達式 168
7.3 慣用疊代 169
7.3.1 疊代的習慣用法 169
7.3.2 Python中的疊代器模式 175
7.4 協同程式 179
7.4.1 使用生成器接口的方法 179
7.4.2 更先進的協同程式 184
7.5 異步編程 191
7.6 小結 192
第8章 單元測試和重構 193
8.1 設計原則和單元測試 193
8.1.1 關於其他形式的自動化測試的說明 194
8.1.2 單元測試和敏捷軟體開發 195
8.1.3 單元測試和軟體設計 196
8.1.4 定義測試內容的邊界 199
8.2 測試的框架和工具 200
8.2.1 用於單元測試的框架和庫 200
8.2.2 代碼覆蓋率 209
8.2.3 模擬對象(Mock對象) 211
8.3 代碼重構 216
8.3.1 代碼演進 216
8.3.2 需要演進的不僅僅是生產代碼 218
8.4 更多關於單元測試的信息 220
8.4.1 基於屬性的測試 220
8.4.2 突變測試 221
8.5 測試驅動開發的簡要介紹 223
8.6 小結 224
第9章 常見的設計模式 225
9.1 Python中設計模式的注意事項 225
9.2 有效的設計模式 227
9.2.1 創建型模式 227
9.2.2 結構型模式 233
9.2.3 行為模式 240
9.3 空對象模式 250
9.4 關於設計模式的後想法 252
9.4.1 模式對設計的影響 252
9.4.2 模型中的名稱 253
9.5 小結 254
第 10章 整潔架構 255
10.1 從整潔代碼到整潔架構 255
10.1.1 關注點分離 256
10.1.2 抽象 257
10.2 軟體組件 258
10.2.1 包 258
10.2.2 容器 261
10.3 用例 262
10.3.1 編碼 263
10.3.2 服務 268
10.3.3 分析 271
10.4 小結 273
寫在後 274
作者簡介
馬里亞諾·阿那亞(Mariano Anaya)是西班牙籍軟體工程師,有豐富的用Python語言開發軟體,並在軟體體系結構、函式式編程、分散式系統等領域頗有建,曾在2016年和2017年“歐洲Python大會”上發表演講。