書名: 簡約的軟體開發思維:用 Functional Programming 重構程式 - 以 JavaScript 為例
作者: Eric Normand作; 黃駿譯
ISBN: 9789863128090
出版社: 旗標
出版日期: 2024/10
頁數: 582
#資訊
#編程與軟體開發
定價: 1000
售價: 900
庫存: 庫存: 1
LINE US! 詢問這本書 團購優惠、書籍資訊 等

付款方式: 超商取貨付款 line pay
信用卡 全支付
線上轉帳 Apple pay
物流方式: 超商取貨
宅配
門市自取

詳細資訊

【簡介】 Functional programming (函數式程式設計) 是一種已有六十年歷史的程式設計範式,為何現在變得越來越重要?這是因為隨著各種連網設備 (如行動裝置) 和雲端服務的普及,多程序透過網路交換訊息已成為常態,因此分散式系統的開發變得至關重要。 分散式系統軟體開發的複雜性往往導致開發過程容易陷入混亂,程式碼盤根錯節難以除錯維護與擴展,成為揮之不去卻又不敢動的痛處。而 functional programming 的簡約風格因此受到廣泛關注。這種設計範式強調使用函式來構建應用程式,程式碼清晰又容易維護,亦能解決分散式系統多執行緒的問題。除了專門的函數式語言之外,Python、Java、JavaScript、C#、C++、Go 和 Rust 等知名語言的新版中,也因應趨勢增強了對 functional programming 的支援。只要建立了這種思維方式,你就可以應用在自己的程式語言中。 市面上與 functional programming 相關的書籍 (主要為英文書) 通常由學者撰寫,內容偏重理論,而在大型實務專案經驗上顯得不足。這類書中的範例大多過於簡單,未能涉及實際軟體架構問題。與此相反,本書作者擁有二十年在產業界實際運用 functional programming 的經驗,從產業角度出發,旨在幫助那些在軟體工程實踐中遇到困難的工程師重新思考。即使你的目的不是分散式系統,學習 functional programming 的思維都能夠幫助你在撰寫任何程式時想得更周到。 由於 functional programming 的特點 — 無 side effects(額外作用)和資料的不可變性 — 使得它非常適用於開發網路程式,在這種環境中,資料一致性和狀態管理是關鍵挑戰。本書透過 concurrency primitives(併發基本工具)實作、繪製時間線圖、分析並解決併發操作中的插緒問題,有效處理狀態變化和 bug,從而構建可靠的分散式系統程式。 【目錄】 第零篇 函數式思維起手式 第 1 章 初識函數式程式概念 1.1 什麼是函數式程式設計? 1.2 FP 經典定義在實務中的問題 1.3 誤導人的 FP 定義 1.4 本書將函數式程式設計視為一套特定的技術與概念 1.5 區分 Actions、Calculations 與 Data 1.6 函數式程式設計師特別關心會受呼叫影響的程式碼 1.7 函數式程式設計師會區分資料和可執行的程式碼 1.8 函數式程式設計師眼中的 Actions、Calculations 與 Data 1.9 FP 中三類程式碼的特色整理 1.10 區分 Actions、Calculations 與 Data 的好處為何? 1.11 本書與其它 FP 書籍有何不同? 1.12 到底什麼是函數式思維? 1.13 本書會傳授什麼樣的概念與技術? 第 2 章 實務中的函數式思維 2.1 歡迎光臨唐妮的比薩店 2.2 區分 Actions、Calculations 與 Data 2.3 初探分層設計,依『變化頻率』整理程式碼 2.4 使用頭等抽象化 2.5 以時間線圖將分散式系統視覺化 2.6 多條時間線的執行順序可能不同 2.7 關於分散式系統的寶貴經驗 2.8 時間線分界:讓機器人互相等待 2.9 我們從時間線中學到的事:協調多台機器人 第一篇 徹底學通 Actions、Calculations 與 Data 第 3 章 分辨 Actions、Calculations 與 Data 3.1 ACD 的特性與應用時機 3.2 生活中的 ACD 3.3 買菜教會我們的事情 3.4 用函數式思維撰寫程式 3.5 畫出優惠碼電子報的流程圖 3.6 實作優惠券電子報流程 3.7 將函數式思維應用在既存的程式碼 3.8 Actions 會在程式中擴散 3.9 Actions 的形式多變 第 4 章 擷取 Actions 函式中的 Calculations 4.1 歡迎來到 MegaMart.com! 4.2 計算免運費項目 4.3 計算稅金 4.4 程式的可測試性有待提升 4.5 程式的可重複使用性也需提升 4.6 區分 Actions、Calculations 與 Data 4.7 函式有輸入與輸出 4.8 測試與重複使用性和輸入╱輸出相關 4.9 從一個 Action 中擷取出 Calculation 4.10 擷取另一個 Action 中的 Calculation 4.11 查看完整程式碼 第 5 章 改良 Actions 的設計 5.1 應配合需求設計程式 5.2 應依照需求撰寫函式 5.3 設計原則 1:最小化隱性輸入與輸出 5.4 減少隱性輸入與輸出 5.5 快速清理一下程式碼 5.6 替 Calculations 分類 5.7 設計原則 2:『拆解』是設計的本質 5.8 藉由拆解 add_item() 來改良程式 5.9 擷取『寫入時複製』模式 5.10 使用 add_item() 5.11 再次替 Calculations 分類 5.12 更小的函式與更多 Calculations 第 6 章 在變動的程式中讓資料保持不變 6.1 任何操作中的資料都能具有不變性嗎? 6.2 將操作分為『讀取』、『寫入』與『讀取兼寫入』 6.3 實作『寫入時複製』的三步驟 6.4 利用『寫入時複製』將『寫入』變成『讀取』 6.5 對比實作『寫入時複製』前後的程式碼 6.6 將實作『寫入時複製』的操作普適化 6.7 簡介 JavaScript 陣列 6.8 如果操作既是『讀取』也是『寫入』怎麼辦? 6.9 拆解同時『讀取』與『寫入』的函式 6.10 讓一個函式傳回兩個值 6.11 讀取不可變資料結構屬於 Calculations 6.12 程式中包含隨時間而變的狀態 6.13 不可變資料的效率已經夠高 6.14 作用在物件上的寫入時複製操作 6.15 簡介 JavaScript 物件 6.16 將巢狀資料的『寫入』轉換成『讀取』 6.17 巢狀資料中的哪些東西需要複製? 6.18 將『淺拷貝』與『結構共享』視覺化 第 7 章 讓不變性不受外來程式破壞 7.1 使用既有程式 (legacy code) 時的不變性 7.2 寫入時複製函式需與未實作不變性的函式互動 7.3 防禦型複製能守護資料不變性 7.4 實作防禦型複製 7.5 防禦型複製的原則 7.6 將不受信任的程式包裝起來 7.7 你或許看過的防禦型複製 7.8 比較『寫入時複製』與『防禦型複製』 7.9 深拷貝所需資源較淺拷貝高 7.10 以 JavaScript 實作深拷貝很困難 7.11 想像『寫入時複製』與『防禦型複製』之間的對話 第 8 章 分層設計 (1) 8.1 何謂軟體設計? 8.2 何謂分層設計? 8.3 建立設計直覺 8.4 分層設計的原則 8.5 原則 1:讓實作更直觀 8.6 三個不同的檢視等級 8.7 擷取 for loop 8.8 總結 — 原則 1:讓實作更直觀 第 9 章 分層設計 (2) 9.1 複習分層設計的原則 9.2 原則 2:以抽象屏障輔助實作 9.3 抽象屏障可隱藏實作細節 9.4 細節忽略是雙向的 9.5 更改『購物車』的資料結構 9.6 將『購物車』重新實作為物件 9.7 抽象屏障讓我們能夠忽略細節 9.8 何時該 (或不該) 用抽象屏障? 9.9 總結 — 原則 2:以抽象屏障輔助實作 9.10 程式變得更清楚了! 9.11 原則 3:讓下層函式保持簡約與不變 9.12 總結 — 原則 3:讓下層函式保持簡約與不變 9.13 原則 4:分層只要舒適即可 9.14 呼叫圖呈現了哪些與程式有關的資訊? 9.15 修改呼叫圖上層的函式較安全 9.16 測試底層函式較重要 9.17 底層函式較能重複利用 9.18 總結 — 呼叫圖告訴我們的訊息 第二篇 頭等抽象化 第 10 章 頭等函式 (1) 10.1 行銷部門仍需與開發小組協調 10.2 程式碼異味:函式名稱中的隱性引數 10.3 重構 1:將隱性引數轉換為顯性參數 10.4 辨識頭等與非頭等 10.5 用字串當屬性名稱會不會增加錯誤發生率? 10.6 將屬性名稱頭等化,會不會造成 API 難以修改? 10.7 為什麼要用物件實作資料? 10.8 頭等函式可取代任何語法 10.9 For 迴圈重構範例 10.10 重構 2:以回呼取代主體實作 10.11 內嵌與匿名函式 10.12 為什麼要將 saveUserData() 包裹在函式中? 第 11 章 頭等函式 (2) 11.1 函式名稱中的隱性引數與兩種重構 11.2 重構寫入時複製 11.3 重構陣列的寫入時複製 11.4 讓函式傳回函式 第 12 章 利用函式走訪 12.1 函式名稱中的隱性引數與兩種重構 12.2 MegaMart 想建立新的電子郵件系統 12.3 從範例函式中擷取 map() 的實作 12.4 三大函數式工具 — map() 12.5 傳入函式的三種方法 12.6 範例:取得所有顧客的電子郵件地址 12.7 從範例函式中擷取 filter() 的實作 12.8 三大函數式工具 — filter() 12.9 範例:找出從未消費過的顧客 12.10 從範例函式中擷取 reduce() 的實作 12.11 三大函數式工具 — reduce() 12.12 範例:連接字串 12.13 reduce() 可以做什麼? 12.14 比較三大函數式工具 第 13 章 串連函數式工具 13.1 新的資料請求 13.2 函式鏈整理方法 (1) — 為步驟命名 13.3 函式鏈整理方法 (2) — 為回呼函式命名 13.4 比較兩種函式鏈整理方法 13.5 範例:寄送電子郵件給僅消費過一次的顧客 13.6 以函數式工具重構既有的 for 迴圈 13.7 訣竅 1:將資料儲存至獨立陣列 13.8 訣竅 2:細化步驟 13.9 比較巢狀迴圈與函式鏈寫法 13.10 總結撰寫函式鏈的訣竅 13.11 替函式鏈除錯的訣竅 13.12 其它函數式工具 13.13 以 reduce() 建立資料 13.14 擴增原本的資料 13.15 將 method chaining 中的『點』對齊 第 14 章 處理巢狀資料的函數式工具 14.1 用高階函式處理物件內的值 14.2 讓屬性名稱變顯性 14.3 實作更新物件內屬性值的 update() 14.4 以 update() 修改物件屬性值 14.5 重構 3:以 update() 取代『取得、修改、設定』 14.6 函數式工具 — update() 14.7 將 update() 的行為視覺化 14.8 將巢狀資料的 update() 視覺化 14.9 用 update() 處理巢狀資料 14.10 實作成普適化的 updateOption() 14.11 實作兩層巢狀結構的 update2() 14.12 視覺化說明 update2() 如何操作巢狀物件 14.13 函式 incrementSizeByName() 的四種實作方法 14.14 實作三層巢狀結構的 update3() 14.15 實作任意巢狀深度的 nestedUpdate() 14.16 安全的遞迴需具備什麼? 14.17 將 nestedUpdate() 的行為視覺化 14.18 比較遞迴和迴圈 14.19 遇到深度巢狀資料時的設計考量 14.20 為巢狀資料建立抽象屏障 14.21 總結高階函式的應用 第 15 章 解析時間線 15.1 發現 bug! 15.2 連續點兩下滑鼠 15.3 用時間線圖呈現時間上的變化 15.4 畫時間線圖需掌握兩項基本原則 15.5 Actions 執行順序的兩項細節 15.6 畫出放入購物車的時間線圖:步驟 1 15.7 非同步回呼要畫在不同時間線上 15.8 不同程式語言採用不同執行緒模型 15.9 一步步建立時間線 15.10 畫出『放入購物車』的時間線圖:步驟 2 15.11 時間線圖能反映兩類序列式程式 15.12 時間線圖能反映平行程式碼的順序不確定性 15.13 改善時間線的原則 15.14 JavaScript 的單執行緒 15.15 JavaScript 的非同步佇列 15.16 AJAX 請求與回應 15.17 AJAX 非同步處理的完整流程 15.18 簡化時間線 15.19 閱讀完成的時間線圖 15.20 簡化『放入購物車』的時間線圖:步驟3 15.21 複習時間線圖製作流程 15.22 總結繪製時間線圖的技巧 15.23 並列時間線圖能突顯出問題 15.24 『慢慢點兩次滑鼠』必產生正確結果 15.25 『快速連點兩次滑鼠』可能產生錯誤結果 15.26 共享資源的時間線是問題所在 15.27 將全域變數轉換成區域變數 15.28 將全域變數轉換成引數 15.29 增加函式的可重複使用性 15.30 在非同步呼叫中,需利用回呼實現顯性輸出 第 16 章 多條時間線共享資源 16.1 改善時間線的原則 16.2 『放入購物車』程式仍可能出錯 16.3 DOM 更新的順序必須固定 16.4 在JavaScript 中自行建立佇列 16.5 從現實生活中的共享案例獲取靈感 16.6 讓佇列可重複使用 16.7 分析時間線 16.8 利用時間線圖找出錯誤 16.9 設定佇列容量上限 第 17 章 協調時間線 17.1 改善時間線的原則 17.2 發現新 bug 17.3 優化小組到底改了什麼 17.4 繪製時間線圖步驟 1:辨識 Actions 17.5 繪製時間線圖步驟 2:將 Actions 畫在時間線上 17.6 繪製時間線圖步驟 3:簡化時間線圖 17.7 分析潛在順序 17.8 優化後的程式為何較快? 17.9 等待兩個平行處理的回呼 17.10 實現時間線分界的 concurrency primitives 17.11 在『放入購物車』程式裡應用 Cut() 17.12 再次分析潛在順序 17.13 分析平行處理的時間 17.14 對『多次點擊』進行分析 17.15 讓 Action 只能執行一次 primitive 17.16 隱性 vs. 顯性時間模型 17.17 總結:操作時間線 第 18 章 反應式與洋蔥式架構 18.1 兩種獨立的設計架構 18.2 與程式更動有關的因與果糾纏不清 18.3 什麼是反應式架構? 18.4 反應式架構是雙面刃 18.5 頭等狀態模型 — Cell 18.6 把 ValueCell 變成反應式 18.7 如何在 cell primitive 改變時更新運費標籤 18.8 用 FormulaCell 處理從其它變數計算來的值 18.9 FP 中的可變狀態 18.10 反應式架構的三大效果 18.11 切斷變更操作與顯示結果之間的關聯 18.12 將連續步驟轉換成處理管道 18.13 讓時間線更具彈性 18.14 複習:兩種獨立的設計架構 18.15 什麼是洋蔥式架構? 18.16 複習:Actions、Calculations 與 Data 18.17 複習:分層設計 18.18 傳統的層狀架構 18.19 函數式架構 18.20 提升可修改與可重複使用性 18.21 檢視該操作中包含哪些元素 18.22 考慮程式碼的可讀性、開發速度與效能 第 19 章 踏上函數式設計之途 19.1 本章的內容規劃 19.2 各位已掌握的專業技巧 19.3 不能忘記的三大重點 19.4 新技術的學習曲線 19.5 提升熟練度的方法 19.6 沙盒:開始你的個人專案 19.7 沙盒:找練習題來做 19.8 實務操作:為程式碼除錯 19.9 實務操作:漸近地改善既有設計 19.10 常見的 FP 程式語言 19.11 最多工作機會的 FP 語言 19.12 適合在什麼平台上運行 19.13 重點 FP 特徵 19.14 函數式設計的數學基礎 19.15 進階閱讀

為您推薦

當代中國新思慮:藝術與美學的批判聲音(簡體書)

當代中國新思慮:藝術與美學的批判聲音(簡體書)

類似書籍推薦給您

原價: 542 售價: 461 現省: 81元
立即查看
棒針編織入門圖解:10種織法學會編織基礎,新手也能編出簡約風格織品【附QR碼示範影片】 (1版)

棒針編織入門圖解:10種織法學會編織基礎,新手也能編出簡約風格織品【附QR碼示範影片】 (1版)

類似書籍推薦給您

【簡介】 日本亞馬遜 4.1星力推,超人氣手作職人的「棒針編織課」! 只要10種「現學現用」的簡單織法,就能快速掌握訣竅, 第一次做就完成「超有成就感!」的質感飾品。 小b媽咪的手作、毛線球牧場MU/s craft、內有鱷貓工作室、就是愛編織,誠摯推薦! ──市面上這麼多編織書,都沒有這本詳細!宛如老師親身指導的最佳入門書。 「自己織東西感覺好有趣,但不知道該從何開始。」 「雖然買了棒針編織書來看,但織圖太複雜了,根本看不懂……」 「即使是向熟人請教,也常常馬上忘記編織方法!」 ◎棒針自學最好用,建立初學必備知識,解決編織的常見疑惑! 本書秉持著「以初學者角度出發」的信念, 帶領你認識「最基礎」且「最必要」的棒針編織知識, 即使不懂針目記號與織圖,也能翻開書就照著織。 從棒針與織線的拿法,到下針、上針的基本針法, 以及換線、縫合、拼接等技巧,所有難題一次搞定! ◎好懂的全圖解教學,加上特寫拍攝示範影片,讓跟做更輕鬆! 全書內容除了以仔細的文字搭配步驟圖解說, 針對各種編織方法、容易搞混的地方或有點複雜的做法, 更附上15支示範影片QR code,細節一目瞭然,降低學習門檻。 從正方形、三角形等簡易圖案,到圍巾、手套、披肩等實用配件, 跟著本書循序漸進熟習編織技巧,就能織成一個又一個充滿魅力的作品, 甚至能依照個人喜歡的顏色、材質,變化出適合自用或送禮的專屬織物。 本書特色: ◎專為初學者設計的自學指南,澈底打好編織基本功! 本書在章節編排上,特別設計成能夠「循序漸進熟練棒針編織」的方式,就像你進入實體編織教室一樣,從認識材料工具開始,接著一邊練習針法一邊做出小圖案,最後再運用不同針法完成大型作品。一步步建立好基本知識與技巧,讓你不再覺得編織很陌生。 ◎最詳細的編織技法分解步驟,零基礎學習也毫無障礙! 從線球拉出線頭的順序、手指掛線方法、起針與收針、編織加減針、用毛線針縫合等等,全部編織技巧皆透過「彩色定格大圖」解說,並盡可能將過程拆解分明。即便是第一次接觸也能看懂,只要拿起針線跟著做就一定會成功。 ◎超特寫拍攝的示範教學影片,帶你加速理解各種技巧! 只要用手機掃描附在書內的QR Code,就能觀看各種編織方法的完整流程,舉凡棒針要繞哪一條線、針要從哪一個線圈穿過、手指要往哪個方向轉……都看得一清二楚。在重點步驟時,甚至會以不同視角、慢動作呈現,讓你學習沒有任何模糊空間。 ◎實體教室才有的細節指導,一次釐清容易混淆的問題! 只要願意拿起針和線,棒針編織其實沒有你想像中的困難。不過,如果忽略了一些小細節,也可能導致編織過程「卡卡的」,或織出與書中照片不同的成品。書內針對新手容易犯的錯誤,特別以「OK、NG」比較圖呈現,並搭配「POINT」、「CHECK」等提示,解答各種可能會有的編織疑惑。 ◎獨家收錄6款超人氣編織物,以質感手作品妝點生活! 用自然捲曲的正方形織片加工製成耳環、一種針法就能快速完成的短圍巾、冬天最實用的露指手套、還有柔軟又輕盈的三角披肩等等,本書會教你將所學的編織技巧實踐在各種生活小物上。透過實際編織出一項作品,加強熟悉棒針編織原理、針法,以及織圖的解讀能力,大幅提升編織實力。 編織達人‧誠摯推薦 這本書,太讓人驚喜了!市面上很多初級編織的書本,但沒有這麼詳細的,細節都有圖文說明,還有QR CODE掃描看影片,真是入門編織人必收藏的一本書。 ──小b媽咪的手作(Mona編織) 初學者也可以嘗試的毛線自學書!跟著步驟慢慢練習的話,也可以做出有成就感的作品~ ──毛線球牧場MU/s craft|Osmile 對我而言棒針的學習門檻比鉤針高一些,但有了清楚的圖示和影片,讓學習編織的過程簡單、愉快,能輕鬆了解編織原理♥很推薦入門的朋友從這裡開始練習棒針! ──內有鱷貓工作室|小關 「真要上手編織這事還真不容易啊!」很多初學的朋友都有這樣的挫折。網路上有很多影片可以參考,但不夠,你還需要一本從入門者視角出發的編織書。 ──就是愛編織|May32 【目錄】 Episode 0 開始編織之前 棒針編織是什麼? 棒針編織的最基本用語 棒針的種類 其他工具 關於織線 Episode 1 使用棒針起針 從線球拉出線頭 手指掛線起針 Episode 2 試著編織小圖案 棒針與織線的拿法 step1起伏編 起伏編的正方形織片 step2平面編 平面編的正方形織片 加強編織實力應記住的事!棒針編織的基本知識 針目的結構與針、段的計算方式 認識針目記號 解讀織圖 僅使用上針和下針編織的花樣 解決棒針編織常見的問題 ‧針目從針上脫落並鬆開 ‧換線/接線 ‧線打結 ‧編織途中想要暫停 step3加針與減針 起伏編的三角形織片(空加針) 起伏編的梯形織片(扭加針) 起伏編的三角形織片(兩併針、三併針) step4縫合‧拼接 挑縫 捲邊縫 step5來製作裝飾旗吧 Episode 3 進階編織風格小物 小浪漫織片耳飾 簡約短圍巾 慵懶風露指手套 自然系十字髮帶 暖質感三角披肩 個性口罩套

原價: 450 售價: 356 現省: 94元
立即查看
資本論簡說 (1版)

資本論簡說 (1版)

類似書籍推薦給您

原價: 320 售價: 272 現省: 48元
立即查看
約翰‧甘迺迪:魅力總統<三民>

約翰‧甘迺迪:魅力總統<三民>

類似書籍推薦給您

原價: 170 售價: 145 現省: 25元
立即查看
戰術緊急傷患救護訓練手冊 (1版)

戰術緊急傷患救護訓練手冊 (1版)

類似書籍推薦給您

【簡介】   在我們的日常生活中,突發事件和危機情況可能發生,因此平時即須賦能醫療專業人員和急救人員具備適應這些情況的技能。TECC課程手冊目標即是向醫療團隊、執法機構和特種部隊等,提供一個全面且高效的戰術救護培訓,以確保他們能夠在高風險環境中迅速而有效地應對各種傷害。 我們期望提升醫療專業人員和急救人員在高風險環境中的應變能力,同時也為社區的安全和災害應變提供一個更加堅固的基石。而透過TECC的培訓和實踐,我們更有餘裕應對未來可能發生的各種挑戰,保護國家社會。 【目錄】 一、緊急醫療救護與到院前救護 二、直接威脅下救護/熱區救護 三、間接威脅下救護/暖區救護:MARCH-M.致命性外出血 四、間接威脅下救護/暖區救護:MARCH-A.呼吸道 五、間接威脅下救護/暖區救護:MARCH-R.呼吸 六、間接威脅下救護/暖區救護:MARCH-C.循環 七、間接威脅下救護/暖區救護:MARCH-H.低體溫與頭部外傷 八、後送救護/冷區救護 九、檢傷分類 十、摘要與結論 看更多

原價: 600 售價: 570 現省: 30元
立即查看