C語言最佳實踐
魏永明 著 黃銘偉 譯
商品描述
「集結數十年的程式設計最佳實務做法與心得,追求卓越程式碼的開發者必讀。」——Linux Virtual Server開源專案創始人創始人、阿里雲 前CTO 章文嵩
「對設計模式、狀態機與多種測試方法有深刻洞察,對於希望提升大規模軟體開發能力者尤為寶貴。」——清華大學計算機系軟體所副所長 陳渝
本書是作者近30年開發與維護MiniGUI、HVML等開源專案的經驗總結,專為協助具備C語言程式編寫經驗的軟體工程師,在短時間內有效提升設計和編程能力。
✅30年開源實戰經驗:作者毫無保留分享開源專案的開發與維護心法。
✅程式碼藝術一目了然:從可讀性、可維護性,到介面設計、效能優化與單元測試,本書教你如何撰寫優雅且高效的C語言程式碼。
✅CMake專案維護利器:掌握CMake構建系統,提高程式碼可移植性,靈活管理功能模組,自動生成原始碼,讓專案維護更加輕鬆自如!
✅介面設計與解耦實戰:深入C語言介面設計模式,學習如何解耦程式碼與資料,實現模組化設計,並掌握狀態機在C程式中的應用,打造高效的斷詞器與解析器。
✅效能優化與測試實踐:從效能優化到測試開發,本書提供一系列避免低效程式碼的策略,帶你掌握單元測試、測試框架與高效除錯技巧!
全書三大篇章:
◆ 基礎篇:建立高品質開發規範
從可讀性與可維護性出發,闡述如何提高程式碼的可讀性、寫好標頭檔並妥善使用、正確理解編譯警告並消除潛在的問題、定義與使用常數等,介紹如何有效利用建置系統產生器(CMake)來維護專案。
◆ 模式篇:駕馭複雜系統的設計模式
深入闡述C語言程式中常見的介面設計模式,說明如何在C程式中解耦程式碼與資料、利用子驅動程式實作模型、設計可載入的模組等,並介紹狀態機的概念,以及在C程式中如何利用狀態機實作分詞器、剖析器等。
◆ 品質篇:極致效能與穩定性挑戰
從效能與單元測試出發,解析如何避免在C程式中寫出低效率程式碼、進行單元測試、使用常見的單元測試框架等,並介紹若干高效率的技巧與工具來除錯C程式。
【推薦讀者】
從事系統軟體、嵌入式系統、物聯網(IoT)開發的專業C語言程式設計師。
追求寫出卓越、高效能、工業級穩定程式碼的開發者。
資訊工程相關科系高年級及研究所學生。
作者簡介
魏永明,擁有中國清華大學工學學士、碩士學位,飛漫軟體創始人。2013年度的「開源軟體傑出貢獻人物」,2023年世界開源軟體Top100貢獻榜人物。1999年發佈了開源軟體MiniGUI並持續研發至今。編(譯)著有《MiniGUI剖析》、《Linux 實用教程》、《Linux 設備驅動程式》(二、三版)等技術著作。2018年11月,發起合璧作業系統開源協作專案;2020年8月,提出首款描述式程式設計語言HVML;2022年7月,開源發佈 HVML 解譯器及渲染器。
目錄大綱
【PART I 基礎篇】
Chapter 1 提高程式碼可讀性
1.1 程式碼可讀性的級別
1.2 不良程式碼的特點
1.3 編程風格的內容
1.4 提高程式碼可讀性的最佳實務
1.5 其他有關編程風格的最佳實務
1.6 命名的藝術
1.7 實例分析
Chapter 2 善用並寫好標頭檔
2.1 重新認識標頭檔
2.2 濫用系統標頭檔的負面影響
2.3 自訂標頭檔中的常見問題
2.4 標頭檔相關的最佳實務
Chapter 3 消除編譯警告
3.1 為何不能忽略編譯警告
3.2 常見的編譯警告及其分類
3.3 編譯警告與函式屬性
3.4 消除編譯警告只是開始
Chapter 4 常數的定義與使用
4.1 常見的常數使用問題
4.2 正確定義與使用常數
4.3 優雅定義與使用常數
4.4 字串的原子化
Chapter 5 充分利用建置系統產生器
5.1 常用的建置系統與建置系統產生器
5.2 CMake影響程式碼的選項或功能
5.3 CMake建置體系樣板
【PART II 模式篇】
Chapter 6 介面設計模式
6.1 何謂好的介面
6.2 兩個介面設計原則
6.3 常規做法和技巧
6.4 模式1:抽象資料型別
6.5 模式2:抽象演算法
6.6 模式3:情境
6.7 模式4:事件驅動
6.8 模式5:通用資料結構
6.9 模式6:同類聚合
6.10 模式7:巡訪與迭代
6.11 模式8:介面的擴充與相容性
6.12 綜合範例:PurC中的有序陣列
Chapter 7 解耦程式碼與資料
7.1 解耦程式碼與資料的重要性
7.2 一個簡單的例子
7.3 再舉一個例子
7.4 更複雜的例子
7.5 自動產生程式碼
Chapter 8 子驅動程式實作模型
8.1 抽象的重要性
8.2 隨處可見的子驅動程式實作模型
8.3 子驅動程式實作模型的組成
8.4 正確區分機制和策略
8.5 子驅動程式實作模型的演進
Chapter 9 動態載入模組
9.1 可載入模組的好處
9.2 軟體堆疊與可載入模組的設計原則
9.3 可載入模組的實作原理與要點
9.4 使用可載入模組支援新的影像格式
9.5 重複使用既有的子驅動程式實作
Chapter 10 狀態機
10.1 狀態機的概念
10.2 定義一個狀態機
10.3 正確理解狀態機
10.4 狀態機在各類剖析器中的應用
【PART III 品質篇】
Chapter 11 追求效能的程式設計
11.1 何謂「效能」
11.2 提高效能的三個基本原則
11.3 實例研究:字串比對
11.4 實例研究:如何判斷一個自然數是否為質數
11.5 實例研究:像素混合的平行計算
11.6 實例研究:達夫裝置
Chapter 12 單元測試
12.1 單元測試的基本概念和重要性
12.2 單元測試的基本方法
12.3 單元測試框架
12.4 實例研究:HVML MATH物件的eval方法
Chapter 13 高效除錯
13.1 高效除錯的基本原則
13.2 C程式常見錯誤分類
13.3 記憶體使用錯誤
13.4 記憶體診斷工具
13.5 日誌









