如何寫出好程序 How to Write Good Programs: A Guide for Students

Perdita Stevens 王磊//週訓傑//萬學凡

買這商品的人也買了...

商品描述

本書通過豐富的小提示、故事和關鍵術語的解釋,清晰地傳授各種編程技巧。
書中包含Python、Java和Haskell的示例,無論你正在學習哪一種編程語言,都能幫助你獲得可移植的編程技能。
本書主要面向學習編程課程的學生以及編程初學者和希望提升編程技藝的程序員,
能幫助你在課程中取得好成績,並有助於養成良好的軟件工程習慣,從而開發出易讀且高效的好程序。

作者簡介

Perdita Stevens

愛丁堡大學的教授,曾教授多種編程語言的編程和軟件工程課程,
學生涵蓋本科一年級學生到成熟的專業軟件開發人員。
她與人合著了UsingUML: Software Engineering with Objectsand Components(1998),
還因雙向轉換方面的工作獲得了2017年建模大會的10年最具影響力論文獎和最佳論文獎。

目錄大綱

推薦序一 
推薦序二 
推薦序三 
推薦序四 
譯者序 
第1章  介紹 1 
1.1 本書適合誰 3 
1.2 關於方框  4 
1.3 本書的結構 6 
1.4 致謝 6 

第2章  什麼是好程序 8 

第3章  如何開始 11 
3.1 究竟什麼是程序 11 
3.2 你需要什麼 12 
3.2.1 使用交互式提示 13 
3.2.2 使用文本編輯器 14 
3.3 了解待辦任務  16 
3.4 編寫程序 18 
3.4.1 設置任務 19 
3.4.2 朝著完全正確的代碼邁進 24 
3.5 感到困惑時怎麼辦 25 

第4章  如何理解編程語言 29 
4.1 編譯與解釋 30 
4.2 類型 33 
4.3 結構 36 
4.4 歷史、社區與動機 38 
4.5 範式 39 

第5章  如何使用最佳工具 42 
5.1 使用最基本的工具 43 
5.2 什麼是IDE 44 
5.3 展望 47 

第6章  如何確保程序不會丟失 48 
6.1 立即恢復:撤銷 49 
6.2 基本災難恢復:文件 49 
6.3 避免災難:保存版本 51 
6.4 流程自動化:使用版本控制系統 52 
6.5 管理未使用的代碼 54 
6.6 備份和雲 56 

第7章  如何測試程序 59 
7.1 手動測試 60 
7.2 基本的自動化測試 62 
7.3 正確的自動化測試 65 
7.4 你應該進行哪些測試 66 
7.5 應該在何時編寫測試 68 
7.6 基於屬性的測試 69 

第8章  如何讓程序清晰 72 
8.1 編寫清晰的代碼對你有何幫助 72 
8.2 註釋 74 
8.3 名字 77 
8.4 佈局和留白 80 
8.5 結構和習慣用法 83 

第9章  如何調試程序 87 
9.1 當程序還無法運行時 89 
9.2 當程序執行錯誤時 94 
9.3 紙板調試法 103 
9.4 如果這些都失敗了 103 
9.5 修復bug 104 
9.6 修復bug後 106 
9.6.1 查找類似的bug 106 
9.6.2 避免重複出現相同的bug 108 
9.6.3 防禦式編程 112 

第10章  如何優化程序 114 
10.1 可維護性 115 
10.1.1 消除重複 116 
10.1.2 選擇抽象 120 
10.2 效率 122 
10.3 重構 126 
10.4 提陞技能 129 

第11章  如何獲得幫助 132 
11.1 解決一般問題 133 
11.2 解決具體問題 135 
11.2.1 從錯誤信息中獲得幫助 136 
11.2.2 查找說明和有用的代碼 137 
11.2.3 解決複雜的程序問題 138 
11.2.4 尋求幫助 140 
11.2.5 入門幫助 141 
11.3 當老師讓你困惑時怎麼辦 142 

第12章  如何在課程作業中取得好成績 144 
12.1 七條黃金法則 144 
12.2 上機實驗 146 
12.3 課程設計 147 
12.4 團隊合作 148 
12.5 演示 149 
12.6 反思寫作 150 

第13章  如何在編程考試中取得好成績 152 
13.1 準備考試 153 
13.1.1 了解考核內容 153 
13.1.2 用以前的試卷練手 154 
13.1.3 考試規劃 155 
13.2 考試中 155 
13.3 書面考試的具體要點 156 
13.4 上機考試的具體要點 156 
13.5 選擇題考試 157 
第14章  如何選擇編程語言 159 
14.1 需要考慮的問題 159 
14.2 你可能遇到的幾種語言 162 
14.3 語言環境的變化 164 
第15章  如何超越本書 166 
15.1 編寫更多程序 166 
15.2 特定的編程語言 167 
15.3 一般編程 167 
15.4 軟件工程 168 
15.5 編程語言理論 170 
參考文獻 172