為您推薦
類似書籍推薦給您
類似書籍推薦給您
書名:無瑕的程式碼:整潔的軟體設計與架構篇 作者:Robert C. Martin 出版社:博碩 出版日期:5/15/2018 條碼:9789864342945 內容簡介 工程師︰我已經拜讀了《Clean Code》,還有必要讀《Clean Architecture》嗎? 架構師︰喔,你會做磚頭,那你會蓋房子嗎? 將近10年的等待,全球知名作家Uncle Bob終於推出新作品《Clean Architecture》,由書名很容易就能猜到,這本書和《Clean Code》一定有關。沒錯,這兩本書是有些相同,但又有很大的不同。相同之處在於,這兩本書都是在教導軟體工程師如何正確開發出好的軟體,甚至兩本書提到的原則名稱有些還是相同的。不同之處在於,即便是相同的原則,但在不同層次上使用時,要注意的地方截然不同。 總結來說,好的軟體系統始於整潔的程式碼(clean code),但光是這樣還不夠。也就是說,如果磚塊做得不好,那麼建築物的架構也就不重要了。但就另一方面來說,你也能用精心製作的磚塊來製造大量的垃圾,這本書就是要避免你製造垃圾。 因此,除了閱讀《Clean Code》之外,你還需要閱讀《Clean Architecture》! 再次地,Robert C. Martin以大師強而有力的口吻,極具說服力的文字來撰寫這本書,透過這本書教您如何建構好軟體的架構,釐清什麼是架構,以及認清獨立部署和獨立開發的重要性。如果您想開發的是企業級的軟體,那就千萬不可錯過這本書。 本書將徹底顛覆您的許多觀點,例如微服務是個架構嗎?C語言沒有多型嗎(多型是物件導向發明的嗎)?C語言和C++的封裝相比,誰比較完美?軟體是數學還是科學?什麼是測試的本質?你應該使用框架嗎?關聯式資料庫為何會流行,是否已日暮途窮了呢?你可以先試著回答這些問題,然後在閱讀本書之後,再次審思這些問題,相信大多數的人,要答對一半都很困難。 如果您自許成為一位專業的軟體工程師,強烈建議您,一定要好好詳讀這本書。 讀者評論 架構代表了塑造系統的「重要」設計決策,有多「重要」則是由因應變化的成本來衡量的。 Grady Booch ──《Object-Oriented Analysis and Design with Applications》作者 如果你認為好架構的代價是昂貴的,那不妨試試糟糕的架構。 Brian Foote and Joseph Yoder ──《Pattern Languages of Program Design 4》作者 架構是你希望在專案早期就能得到的決定,但你並不一定能比其他任何時候更容易得到它們。 Ralph Johnson ──《Design Patterns: Elements of Reusable Object-Oriented Software》作者 架構是一個假設,需要透過實作和度量來證明。 Tom Gilb ──《Competitive Engineering: A Handbook For Systems Engineering, Requirements Engineering, and Software Engineering Using Planguag》作者 走得快的唯一方法就是走得好。 Robert C. Martin── 軟體大師,《Clean Code》、《無瑕的程式碼》系列書作者, 會做磚頭有什麼了不起,會蓋房子才厲害。 《博碩文化》、《名家名著》 總編輯 ── 陳錦輝 作者介紹 作者簡介 Robert C. Martin 人稱Uncle Bob,程式設計經驗超過40年,Agile Software(敏捷軟體開發)的提倡者之一。創立Object Mentor,這是一間專注於C++、Java物件導向、模式、UML、敏捷方法學和極限程式設計的顧問諮詢公司。 在這些領域,作者撰寫了相當多的名著,並獲得有IT奧斯卡獎之稱──Jolt震撼年度大獎。其中,最暢銷的是《Clean Code》(中文版為無瑕的程式碼),為Amazon該類別的暢銷榜首,也被國內公認為程式設計師必讀的一本書。 目錄 Part I 簡介 Chapter 1 什麼是設計與結構 Chapter 2 兩種價值觀的故事 Part II 從基礎開始:程式設計範式 Chapter 3 範式概述 Chapter 4 結構化程式設計 Chapter 5 物件導向程式設計 Chapter 6 函數式程式設計 Part III 設計原則 Chapter 7 SRP:單一職責原則 Chapter 8 OCP:開放-封閉原則 Chapter 9 LSP:Liskov 替換原則 Chapter 10 ISP:介面隔離原則 Chapter 11 DIP:依賴反向原則 Part IV 元件原則 Chapter 12 元件 Chapter 13 元件內聚性 Chapter 14 元件耦合性 Part V 架構 Chapter 15 什麼是架構 Chapter 16 獨立性 Chapter 17 邊界:畫線 Chapter 18 邊界剖析 Chapter 19 策略和層級 Chapter 20 業務規則 Chapter 21 會尖叫的架構 Chapter 22 整潔的架構 Chapter 23 Presenter 與Humble Object Chapter 24 部分邊界 Chapter 25 層與邊界 Chapter 26 主元件 Chapter 27 服務:偉大與微小 Chapter 28 測試邊界 Chapter 29 整潔的嵌入式架構 Part VI 細節 Chapter 30 資料庫是細節 Chapter 31 Web是細節 Chapter 32 框架是細節 Chapter 33 案例研究:影片販售 Chapter 34 遺漏的章節 Part VII 附錄 Appendix A 架構考古學
類似書籍推薦給您
【簡介】 Clean Code Python 寫 乾淨程式碼 告別技術債,不再為爛程式加班收爛攤 寫程式不是比誰先跑起來,而是能否長期維護。當需求一改就骨牌倒、長函式與巢狀條件像毛線球、沒有測試誰也不敢動,這些都是「技術債」。本書以實務為軸,從Clean Code 的定義、Pythonic 寫法、命名與文件、PEP 8 與工具鏈、函數與物件設計、模組化結構、單元測試、例外處理與 logging,到壞味道識別與小步重構,一步步把專案從混亂導向清晰與可持續。 你將學到 ☆Clean Code的5大原則 ◎「可讀」 ◎「可維護」 ◎「單一職責」 ◎「低耦合」 ◎「高內聚」 ☆如何判斷好/壞程式碼與乾淨程式碼的核心特徵。 ☆Pythonic vs. Non-Pythonic 的差異與常見誤用修正。 ☆命名、註解、docstring 的可讀性準則,讓程式自我說明。 ☆PEP 8 + black/isort/flake8 的實戰組合,建立一致風格。 ☆函數設計:單一職責、控制參數、避免副作用的落地做法。 ☆物件設計:恰到好處的封裝、避免過度設計與抽象。 ☆模組化設計:高內聚、低耦合,避開循環匯入。 ☆單元測試:unittest/pytest 的測試網,降低回歸風險。 ☆錯誤處理與 logging:把問題抓出來,也把原因留下來。 ☆重構手法:辨識壞味道、拆長 if-elif-else,穩健演進。 適合讀者 ☆每天與需求變更拔河的一般公司軟體工程師。 ☆技術主管、Code Review 參與者與維運/測試人員。 ☆想把「能跑」升級為「能維護、能擴充」的 Python 開發者 「為何必讀這本書」的關鍵理由 ☆把「能跑」升級為「能維護」:讓修改不再牽一髮動全身。 ☆對抗技術債:用小步重構把壞味道逐一清掉,減少救火。 ☆可讀性優先:命名、註解、docstring 讓程式能自我說明。 ☆統一團隊風格:PEP 8 +自動化工具(black/isort/flake8)讓評審聚焦在設計而非格式。 ☆降低回歸風險:pytest 測試網+錯誤處理與 logging,建立可靠的安全網。 ☆穩定交付:把需求變更的成本降到最低,開發節奏更平滑。 ☆良好設計習慣:單一職責、低耦合、高內聚,在真實專案中務實落地。 ☆清晰專案結構:模組化與目錄切分,避免循環依賴、縮短新人上手時間。 ☆有章可循:從 Code Review 清單到重構步驟,立即可用的標準流程。 ☆減少加班:把時間花在創造價值,而不是收爛攤。 ☆現場的案例:每章皆以常見反模式與對治法示範,學了就能用。 ☆可長可久:把品質內建在流程裡,讓專案能持續演進與擴充。 一句話總結:「告別技術債」,「不再為爛程式加班收爛攤」。寫得乾淨,改得安心,交付更穩。【目錄】 設計,之後以單元測試、錯誤處理與日誌作為品質保護網,最後以重構的方法論結束,示範如何用小步快走把壞味道轉為設計演進。 你可以期待以下收穫: ☆ 可讀性優先的思維框架:何時寫註解、何時用好命名讓程式「自我說明」。 ☆ 可維護的設計技術:單一職責、高內聚、低耦合在 Python 的務實落地。 ☆ 可被信任的交付流程:以測試與日誌形成回歸保險與可觀測性。 ☆ 平滑的重構習慣:把長 if-elif-else、過長函數、全域依賴等壞味道,一步步拆解。 ☆ 團隊共識與規範:善用 PEP 8 與自動化工具,讓風格統一、評審聚焦。 這不是一本只在白板上成立的理論書;每一章都以可複製的實務建議與常見反模式切入,教你如何在「現在」的專案裡起步,而不是等到「全部重寫」的那一天。你會發現,乾淨不是成本,而是可持續交付的必要條件;不是變慢,而是把「改壞的時間」換回來給「改好的速度」。 閱讀建議:第一次可順讀第 1 ~ 6 章,建立共同語言與基礎觀念。接著依團隊痛點挑選章節深入,例如先把測試與日誌補齊,再推動重構與模組化。若你是技術主管,亦可將章節作為 Code Review 與新人成長的對照清單,逐步形成團隊的「乾淨文化」。 期盼這本書,能成為你對抗技術債的日常工具。也願它在每一次評審、每一次交接、每一次緊急修補時,都替你省下一點點不必要的焦慮。告別技術債,不再為爛程式加班收爛攤 - 從今天的每一行程式開始。 本書編寫雖然力求完善,但疏漏或謬誤在所難免,還請讀者不吝指正、賜教,讓這本「Clean Code」能持續進化,陪伴你一同前行。 圖書資源說明 本書籍的所有程式實例可以在深智公司網站下載。 目錄 第1章 什麼是 Clean Code ▌1-1 乾淨程式碼的定義與價值 1-1-1 什麼是乾淨程式碼 1-1-2 乾淨程式碼的核心特徵 1-1-3 為什麼需要乾淨程式碼 1-1-4 乾淨程式碼與技術債 ▌1-2 好程式與壞程式的對比 1-2-1 壞程式碼的典型特徵 1-2-2 好程式碼的特徵 1-2-3 案例對比 - 從壞程式到好程式 1-2-4 從對比中學到的啟示 第2章 Python 語言特色與常見誤用 ▌2-1 Pythonic vs Non-Pythonic 2-1-1 什麼是 Pythonic 2-1-2 Non-Pythonic 的典型寫法 2-1-3 常見範例對比 2-1-4 程式邏輯語義化 - any( )/all( ) 2-1-5 為什麼要寫 Pythonic 程式碼 ▌2-2 常見 Python 惡習 2-2-1 什麼是「程式惡習」 2-2-2 認識「耦合度」 2-2-3 認識「內聚」 2-2-4 常見 Python 惡習類型與改進建議 2-2-5 避免惡習的原則 ▌2-3 認識PEP 與PEP 8 2-3-1 PEP 8 名稱緣由 2-3-2 PEP 8 的核心原則 2-3-3 其他與Clean Code 相關的PEP 條目 第3章 簡潔程式碼的五大原則 ▌3-1 可讀性(Readability) 3-1-1 為什麼可讀性比執行效能更重要 3-1-2 清楚命名的技巧(變數、函數、類別) 3-1-3 適度使用註解與文件字串(docstring) 3-1-4 善用 Python 語言特性提升可讀性 ▌3-2 可維護性(Maintainability) 3-2-1 什麼是可維護程式碼 3-2-2 減少重複(DRY 原則) 3-2-3 模組化設計與程式結構規劃 3-2-4 自動化測試與版本控制的輔助角色 ▌3-3 單一職責(Single Responsibility Principle, SRP) 3-3-1 SRP 的定義與意義 3-3-2 為什麼「包山包海」的函數是壞習慣 3-3-3 將功能拆分為小型模組的實務方法 ▌3-4 低耦合(Low Coupling) 3-4-1 耦合的定義與分類(資料耦合、控制耦合、全域耦合等) 3-4-2 高耦合帶來的風險與技術債 3-4-3 如何降低耦合 - 參數傳遞、抽象化、依賴注入 3-4-4 Python 範例 - 全域變數依賴 vs. 參數傳遞設計 ▌3-5 高內聚(High Cohesion) 3-5-1 內聚的定義與重要性 3-5-2 高內聚 vs. 低內聚的比較 3-5-3 如何提高內聚 - 單一責任、清楚模組邊界 3-5-4 Python 範例 - 將輸入、邏輯、輸出分離的設計 第4章 命名原則與慣例 ▌4-1 命名的重要性 4-1-1 為何命名會直接影響程式的可讀性與維護性 4-1-2 好命名與壞命名的差異比較 4-1-3 「程式即文件」的觀念 - 命名如何取代多餘註解 ▌4-2 變數命名實務 4-2-1 命名原則 - 語意清楚、避免縮寫、保持一致 4-2-2 常見錯誤命名 vs. 改進範例 4-2-3 特殊情境 - 常數與布林變數命名 4-2-4 Python 命名慣例 - snake_case/camelCase ▌4-3 函數命名實務 4-3-1 函數命名應以動詞或動詞片語為主 4-3-2 命名表達「做什麼」,而不是「怎麼做」 4-3-3 範例對比 data() vs. fetch_user_data() ▌4-4 類別命名實務 4-4-1 PEP 8 的PascalCase 的慣例 4-4-2 類別命名以名詞或名詞片語為主 4-4-3 如何讓類別名稱反映「它代表什麼」 第5章 註解與文件化 ▌5-1 註解該寫在哪裡、不該寫什麼 5-1-1 註解的角色 - 補充「為什麼」,而非重複「做什麼」 5-1-2 該寫的註解 5-1-3 不該寫的註解 5-1-4 註解的最佳實踐 ▌5-2 使用 docstring 寫出清楚的說明 5-2-1 什麼是 docstring ?與一般註解的差異 5-2-2 docstring 的用途 5-2-3 docstring 的撰寫格式 -( 單行、多行、常見風格) 5-2-4 撰寫清楚 docstring 的最佳實踐 第6章 程式碼格式化與排版 ▌6-1 再談PEP 8 規範 6-1-1 PEP 8 的角色與重要性 6-1-2 核心規範 6-1-3 PEP 8 與程式碼審查 ▌6-2 常用工具 - black、isort、flake8 6-2-1 black 自動格式化工具 6-2-2 isort 自動整理匯入順序 6-2-3 flake8 程式碼檢查工具 第7章 函數設計原則 ▌7-1 函數應該只做一件事 7-1-1 單一職責原則在函數層級的應用 7-1-2 壞範例 - 包山包海的函數 7-1-3 好範例 - 將函數拆分成小而清楚的單元 7-1-4 優點 - 可讀性、可測試性、可維護性 ▌7-2 避免副作用 7-2-1 什麼是副作用?為什麼要避免? 7-2-2 常見的副作用類型 7-2-3 如何控制副作用 7-2-4 純函數的優勢 ▌7-3 參數數量控制 7-3-1 為什麼過多參數會降低可讀性與可測試性 7-3-2 控制參數數量的實務方法 7-3-3 壞範例 vs 好範例(過多參數的重構對比) 第8章 物件導向與類別設計 ▌8-1 善用 class 與 method 的封裝性 8-1-1 類別的核心價值 - 資料與行為的結合 8-1-2 為什麼要使用封裝 8-1-3 壞範例 - 所有邏輯寫在全域函數 8-1-4 好範例 - 使用類別封裝資料與操作 8-1-5 善用公開方法與私有方法的分工 ▌8-2 不過度設計 8-2-1 什麼是過度設計 8-2-2 壞範例 - 單純功能卻被拆成過多類別 8-2-3 好範例 - 保持設計簡單,類別數量與責任相符 8-2-4 YAGNI 原則 - 不要為了未來而過早設計 ▌8-3 不過度抽象 8-3-1 抽象化的價值與風險 8-3-2 壞範例 - 不必要的繼承或介面層 8-3-3 好範例 - 在必要時才抽象,保持彈性與可讀性。 8-3-4 KISS 原則 - 保持簡單,避免不必要的抽象 第9章 模組化與檔案結構整理 ▌9-1 拆分功能模組的策略 9-1-1 何謂模組化?為何模組化能降低複雜度 9-1-2 拆分原則 - 單一職責、低耦合、高內聚 9-1-3 何時該拆模組 9-1-4 範例 - 將單一大檔案重構為多個模組 9-1-5 模組間的依賴控制 - 避免循環匯入 ▌9-2 常見小型專案目錄結構範例 第10章 單元測試 ▌10-1 測試的重要性 10-1-1 為什麼需要測試? 10-1-2 測試的層級與類型簡介 10-1-3 測試在乾淨程式碼中的角色 ▌10-2 使用 unittest 撰寫測試 10-2-1 Python 內建測試框架 unittest 10-2-2 常見斷言方法 10-2-3 測試資料的準備與清理(setUp / tearDown) ▌10-3 使用 pytest 撰寫測試 10-3-1 pytest 的基本用法 10-3-2 pytest 參數 10-3-3 使用 fixture 管理測試資源 10-3-4 pytest 進階功能 第11章 錯誤處理與例外管理 ▌11-1 try/except 的最佳實踐 11-1-1 try/except/else/finally 基本語法回顧 11-1-2 避免過度捕捉 - 不要用「大雜燴 except」 11-1-3 精準處理 - 捕捉特定例外,而不是所有錯誤 11-1-4 使用 finally 做資源清理 11-1-5 使用 else 區塊分離「正常邏輯」與「例外邏輯」 11-1-6 完整錯誤處理模式實例 ▌11-2 自定義例外的使用場景 11-2-1 什麼時候需要自定義例外? 11-2-2 定義自訂例外類別 11-2-3 加入額外資訊 - 錯誤碼與使用者資訊 11-2-4 專案範例 - 訂單處理系統中的自定義例外 11-2-5 小心過度設計 - 避免建立太多沒意義的例外類別 第12章 日誌紀錄與除錯技巧 ▌12-1 使用 logging 模組 12-1-1 為什麼不要只用 print() ? 12-1-2 logging 基本用法 12-1-3 設定輸出格式與檔案紀錄 12-1-4 在專案中的最佳實踐 ▌12-2 除錯的最佳策略與工具 12-2-1 為什麼只靠「印變數」是不夠的? 12-2-2 除錯策略 12-2-3 Python 常見除錯工具 第13章 程式碼壞味道重構的原則與方法 ▌13-1 何時需要重構 – 程式碼壞味道 13-1-1 程式碼壞味道 (Code Smells) 的徵兆 13-1-2 技術債 (Technical Debt) 的警訊 ▌13-2 小步快走 - 由壞變好 13-2-1 重構的核心精神 13-2-2 實踐方法 13-2-3 過長 if – elif - else 的重構
類似書籍推薦給您
【簡介】 提升程式設計與品質的訣竅 推薦給堅持寫出優質軟體的你 無論技術如何發展,程式碼的簡潔仍然至關重要。 程式碼的簡潔度和明確度,不僅是程式設計師的責任,也影響資源分配、開發策略、專案管理等面向,甚至關乎整個軟體產業的發展。 雖然 AI 可以自動生成程式碼,但目前仍存在基本錯誤、理解問題和維護困難等缺陷。現階段,人機合作還是主流,程式設計師需要監督、修正和改善 AI 生成的程式碼。 因此無論技術如何演進,程式碼的可讀性和維護性仍然十分重要。 「這是一本資訊豐富的著作,它用深入的理論和豐富的實例來說明如何寫出clean code。強烈推薦給堅持寫出優質軟體的你。」 —Daniel Moka 軟體工匠,Moka IT 「Maxi是位應用科學家,本書充分展示出他在軟體開發領域深厚的專業知識。」 —Alex Bunardzic 軟體開發者和教育者 負責龐大且複雜的code base軟體工程師和架構師必須高效擴展和維護程式碼。在本書中,Maximiliano Contieri將以clean code(簡潔程式碼)的理念為基礎,帶你瞭解如何快速辨識改善的機會,並評估它們對產品程式碼的影響。這些技術為系統的可靠性和演進帶來的好處會隨著時間推移而逐漸實現。 本書使用JavaScript、PHP、Python、Java等程式語言的實際範例來提供經過驗證的祕訣,幫助你擴展和維護大型系統。本書的每一個章節皆涵蓋許多基本概念,包括易讀性、耦合、易測試性、安全性和易擴展性,還有程式碼異味及其處理方法。 隨著本書的進展,重構的祕訣和它們想解決的問題將變得更加複雜。您將從中: ‧瞭解clean code的好處,學會辨識改善的機會 ‧逐步學習重構技巧 ‧瞭解clean code背後的理論 ‧從多種現代程式語言的實際案例中學習 ‧全面瞭解各種程式碼異味、它們的影響和可能的解決方案 ‧寫出直接、易讀和易學的程式碼 【目錄】 第一章 Clean Code 第二章 設置公理 第三章 貧乏模型 第四章 原始型態迷戀 第五章 可變性 第六章 宣告性程式碼 第七章 命名 第八章 註釋 第九章 標準 第十章 複雜性 第十一章 臃腫 第十二章 YAGNI 第十三章 快速失敗 第十四章 If 第十五章 Null 第十六章 過早優化 第十七章 耦合 第十八章 全域變數 第十九章 層次結構 第二十章 測試 第二十一章 技術債 第二十二章 例外 第二十三章 meta 程式 第二十四章 型態 第二十五章 安全性
資訊
工程
數學與統計學
機率與統計
自然科學
健康科學
地球與環境
建築、設計與藝術
人文與社會科學
教育
語言學習與考試
法律
會計與財務
大眾傳播
觀光與休閒餐旅
考試用書
研究方法
商業與管理
經濟學
心理學
生活
生活風格商品
參考書/測驗卷/輔材