| *完成訂單後正常情形下約兩周可抵台。 *本賣場提供之資訊僅供參考,以到貨標的為正確資訊。 印行年月:202411*若逾兩年請先於私訊洽詢存貨情況,謝謝。 台灣(台北市)在地出版社,每筆交易均開具統一發票,祝您中獎最高1000萬元。 書名:軟件開發中的決策-權衡與取捨 ISBN:9787115635167 出版社:人民郵電 著編譯者:托馬斯.萊萊克 喬恩.斯基特 頁數:336 所在地:中國大陸 *此為代購商品 書號:1688662 可大量預訂,請先連絡。 內容簡介 本書詳細闡述如何在設計、規劃和實現軟體時做出更好的決策,通過真實的案例,以抽絲剝繭的方式分析那些失誤的決策,探討還有哪些可能的解決方案,並對比各種方案的優缺點,摸索軟體設計的常青模式。本書通過實例來說明某些決策的後果,例如代碼重複如何影響系統的耦合與演進速度,以及如何在日期和時間信息方面隱藏細微差別。本書還介紹如何根據帕累托法則有效地縮小優化範圍,確保分散式系統的一致性。 通過閱讀本書,讀者很快就可以將作者來之不易的經驗應用到自己的項目中,以預防錯誤並採取更合適的編程決策。 本書適合負責軟體設計與實現決策的中高級開發人員和架構師閱讀。作者簡介 喬恩·斯基特(Jon Skeet),谷歌高級軟體工程師,微軟C# MVP,擁有近20年C#項目開發經驗。自2002年來,他一直是C#社區、新聞組、國際會議和Stack Overflow網站中非常活躍的技術專家,回答了數以萬計的C#和 NET相關問題,是Stack Overflow上的傳奇貢獻者。目錄 第1章 引言1 1 決策的後果與模式 1 1 1 單元測試 1 1 2 單元測試與集成測試的比例 1 2 設計模式及其失效分析 1 3 架構設計模式及其失效分析 1 3 1 可擴展性與彈性 1 3 2 開發速度 1 3 3 微服務的複雜性 小結 第2章 代碼重複不一定是壞事:代碼重複與靈活性的權衡 2 1 代碼庫間的通用代碼及重複代碼 2 1 1 添加新需求導致的代碼重複 2 1 2 實現新的業務需求 2 1 3 結果評估 2 2 通過庫在代碼庫之間共享代碼 2 2 1 共享庫的取捨與不足 2 2 2 創建共享庫 2 3 抽取代碼為一個獨立的微服務 2 3 1 採用獨立微服務方式的取捨與弊端 2 3 2 關於獨立微服務的總結 2 4 通過代碼重複改善松耦合 2 5 利用繼承減少API設計中的重複 2 5 1 抽取出一個請求處理器作為基類 2 5 2 繼承與緊耦合的取捨 2 5 3 繼承與組合的取捨 2 5 4 一貫性的重複與偶然性的重複 小結 第3章 異常及其他——代碼錯誤的處理模式 3 1 異常的層次結構 3 2 代碼異常處理的最佳模式 3 2 1 公共API的已檢測異常處理 3 2 2 公共API的未檢測異常處理 3 3 異常處理的反模式 3 3 1 異常時,關閉資源 3 3 2 反模式:利用異常控制應用流 3 4 源自第三方庫的異常 3 5 多線程環境中的異常 3 6 使用Try以函數式的途徑處理異常 3 6 1 在生產代碼中使用Try 3 6 2 混合使用Try與拋出異常的代碼 3 7 異常處理策略的性能對比 小結 第4章 靈活性與複雜性的權衡 4 1 一個健壯但無法擴展的API 4 1 1 設計一個新組件 4 1 2 從最簡單的代碼開始 4 2 允許客戶使用自己的指標框架 4 3 通過鉤子為你的API提供可擴展性 4 3 1 防範鉤子API的過度使用 4 3 2 鉤子API的性能影響 4 4 通過偵聽器為你的API提供可擴展性 4 4 1 使用偵聽器與鉤子的取捨 4 4 2 設計的不可修改性 4 5 API的靈活性分析及維護開銷的權衡 小結 第5章 過早優化vs熱路徑優化:影響代碼性能的決策 5 1 過早優化是萬惡之源 5 1 1 構建賬戶處理管道 5 1 2 依據錯誤的假設進行優化處理 5 1 3 對性能優化進行基準測試 5 2 代碼中的熱路徑 5 2 1 從軟體系統的角度理解帕累托法則 5 2 2 依據SLA配置線程(併發用戶)數 5 3 具有潛在熱路徑的word服務 5 3 1 獲取每日一詞 5 3 2 驗證單詞是否存在 5 3 3 使用HTTP服務,向外提供WordsService 5 4 檢測你代碼中的熱路徑 5 4 1 使用Gatling創建API的性能測試 5 4 2 使用MetricRegistry度量代碼路徑 5 5 改進熱路徑的性能 5 5 1 為現有代碼創建JMH微基準測試 5 5 2 利用緩存優化word-exists程序 5 5 3 調整性能測試,使用更多的輸入單詞 小結 第6章 API的簡潔性vs維護成本 6 1 一個為其他工具服務的基礎庫 6 1 1 創建雲服務客戶端 6 1 2 漫談認證策略 6 1 3 理解配置的機制 6 2 直接暴露依賴庫的配置 6 3 一個將依賴庫的配置抽象化的工具 6 4 為雲服務客戶端庫添加新的配置 6 4 1 為批處理工具添加新配置 6 4 2 為流處理工具添加新配置 6 4 3 方案對比:用戶體驗的友好性vs維護成本 6 5 棄用刪除雲服務客戶端庫的某個配置 6 5 1 刪除批處理工具的某個配置 6 5 2 刪除流服務中某個配置 6 5 3 兩種方案用戶體驗與維護成本的比較 小結 第7章 高效使用日期和時間數據 7 1 日期和時間信息的概念 7 1 1 機器時間:時間戳、紀元以及持續時間 7 1 2 民用時間:日曆系統、日期時間以及期間 7 1 3 時區、UTC以及UTC偏移量 7 1 4 讓人頭疼的日期和時間概念 7 2 準備處理日期和時間信息 7 2 1 對範疇做限定 7 2 2 澄清日期和時間的需求 7 2 3 使用恰當的庫或者包 7 3 實現日期和時間代碼 7 3 1 保持概念的一致性 7 3 2 通過避免使用默認值提升可測試性 7 3 3 以文本方式表示日期和時間 7 3 4 通過註釋解釋代碼 7 4 有必要單獨指出並測試的極端情況 7 4 1 日曆計算 7 4 2 發生在午夜時分的時區轉換 7 4 3 處理不明確或者跳過的時間 7 4 4 處理不斷變化的時區數據 小結 第8章 利用機器的數據本地性和內存 8 1 數據本地性是什麼 8 1 1 將計算移動到數據處 8 1 2 用數據本地性擴展數據處理 8 2 數據的分區 8 2 1 線下大數據分區 8 2 2 分區和分片的區別 8 2 3 分區演算法 8 3 連接多個分區上的大數據集 8 3 1 在同一台物理機上連接數據 8 3 2 需要數據移動的連接 8 3 3 利用廣播優化連接 8 4 在內存還是磁碟中進 詳細資料或其他書籍請至台灣高等教育出版社查詢,查後請於PChome商店街私訊告知ISBN或書號,我們即儘速上架。 |