函數式設計:原則、模式與實踐 Functional Design: Principles, Patterns, and Practices

Robert C. Martin 譯 吾真本//姚琪琳//覃宇

商品描述

在本書中,著名軟體工程師羅伯特·C. 馬丁(Robert C. Martin,"鮑勃大叔")
解釋瞭如何以及為什麼使用函數式程式設計為真實客戶建立更好的系統。
作者將 Java 中傳統的物件導向編碼結構與函數式語言所支援的編碼結構進行了比較,
確定了每種結構的最佳作用,並展示瞭如何在特定環境中明智地使用這些結構來建立更好的系統。

目錄大綱

目錄
題 獻
推薦序
譯者序

前 言
致 謝
作者簡介
第一部分 函數式基礎
第1章 不變性 2
1.1 什麼是函數式程式設計 3
1.2 賦值的問題 5
1.3 為什麼叫它「函數式」 7
1.4 沒有狀態改變嗎 8
1.5 不變性概念 11
第2章 持久性資料 12
2.1 關於瞞天過海 14
2.2 製作副本 14
2.3 結構共享 16
第3章 迭代與遞歸 19
3.1 迭代 20
3.1.1 極簡Clojure教學 20
3.1.2 迭代概述 22
3.1.3 TCO、Clojure和JVM 22
3.2 遞歸 23
第4章 惰性 26
4.1 惰性累積 28
4.2 為何需要惰性 28
4.3 尾聲 29
第5章 狀態性 30
5.1 何時必須「可變」 33
5.2 軟體事務內存 34
5.3 生活不易,軟體更難 36
第二部分 比較性分析
第6章 質因數練習 39
6.1 Java版 40
6.2 Clojure版 43
6.3 總結 45
第7章 保齡球練習 46
7.1 Java版 47
7.2 Clojure版 51
7.3 總結 54
第8章 八卦公車司機練習 56
8.1 Java版 57
8.1.1 公車司機文件 62
8.1.2 行車線路文件 62
8.1.3 公車站文件 63
8.1.4 八卦故事文件 64
8.1.5 模擬過程文件 64
8.2 Clojure版 65
8.3 總結 69
第9章 物件導向程式設計 70
9.1 函數式薪資問題解決方案 72
9.2 命名空間與原始檔 78
9.3 總結 78
第10章 類型 80
第三部分 函數式設計
第11章 資料流 86
第12章 SOLID 92
12.1 單一職責原則 93
12.2 開閉原則 96
12.2.1 函數 97
12.2.2 有虛表的物件 98
12.2.3 多重方法 98
12.2.4 獨立部署 99
12.3 里氏替換原則 101
12.3.1 ISA原則 103
12.3.2 這不對 105
12.3.3 代表原則 106
12.4 介面隔離原則 106
12.4.1 不需要就別依賴 108
12.4.2 為什麼 108
12.4.3 總結 109
12.5 依賴倒置原則 109
12.5.1 回憶殺 111
12.5.2 違反依賴倒置原則 119
12.5.3 總結 129
第四部分 函數式實用主義
第13章 測試 132
13.1 REPL 133
13.2 Mock 133
13.3 基於性質的測試 134
13.4 診斷技術 137
13.5 函數式 143
第14章 GUI 144
第15章 並發性 155
第五部分 設計模式
第16章 設計模式回顧 165
16.1 函數式程式設計中的模式 167
16.2 抽象伺服器模式 168
16.3 適配器模式 170
16.4 命令模式 174
16.5 組合模式 178
16.6 裝飾器模式 186
16.7 訪客模式 189
16.7.1 To Close or to Clojure 191
16.7.2 90°問題 193
16.8 抽象工廠模式 196
16.8.1 90°問題重現 199
16.8.2 型式安全嗎 201
16.9 總結 201
16.10 補充:物件導向是毒藥嗎 201
第六部分 案 例 研 究
第17章 Wa-Tor小遊戲 204
17.1 如鯠在喉 220
17.2 解決問題 222
17.3 讓魚瘋狂繁殖 230
17.4 對於鯊魚 231
17.5 總結 240
後記 242