內容提要
《一路編程》是一本編程入門書籍,然而,如果以書中所講內容作為入門標準,估計十有八九的在職程式設計師都不能算已入門。現代軟體開發,已經不僅僅是寫出正確的代碼這么簡單,環境、依賴、構建、版本、測試及文檔,每一項都對軟體是否成功交付起到至關重要的作用,這些都是每一個程式設計師在開發軟體過程中必備的技能。《一路編程》對於上述的每一種技能都做了簡潔而精練的介紹,以滿足最基本的日常軟體開發。換句話說,《一路編程》實際上是為現代軟體開發的入門設下了最基本的門檻。相信每一位本書的讀者,不論是即將進入軟體行業,還是已經在軟體行業工作多年,都會獲得收穫。
強烈推薦剛剛或將要成為程式設計師的人及其朋友們閱讀《一路編程》。
目錄
1“Hello, World”寫下第一個程式 1
選擇文本編輯器 1
核心功能 2
做出你的選擇 4
Sublime Text 5
TextMate 5
Notepad++ 5
Gedit 6
Vim 6
Eclipse 6
IntelliJ 7
Xcode 7
Visual Studio 7
創建項目目錄 8
從小處著手:創建測試檔案 8
HTML和JavaScript如何在瀏覽器中一起工作 10
小幅修改的意義 11
乘勝追擊 13
在manifest.json中引用JavaScript 16
讓它運行起來 17
能力越大,責任越大 18
總結 18
2軟體如何工作 19
什麼是“軟體” 19
軟體生命周期 20
原始碼——一切開始的地方 21
一組指令 21
程式語言 22
從原始碼到0和1 27
編譯型語言與解釋型語言:原始碼何時變成二進制碼 27
運行時環境 28
處理器執行 29
輸入和輸出 29
輸入讓軟體更實用(可重用) 30
輸入從哪來 31
軟體如何獲得輸入 32
輸出類型 32
GIGO:垃圾進,垃圾出(Garbage In,Garbage Out) 33
狀態 34
給kittenbook添加狀態 35
記憶體和變數 37
變數 37
變數存儲 38
有限的資源 41
記憶體泄漏 41
總結 42
3認識你的計算機 43
計算機很笨 43
計算機有魔力 44
站在巨人的肩膀上 44
計算機內部 44
處理器 44
短期存儲器 45
長期存儲器 45
使用計算機 46
檔案系統 46
命令行:取得控制權 48
總結 58
4構建工具 59
(幾乎)全部自動化 59
安裝Node 60
安裝Grunt 62
幫你創造軟體的軟體 65
避免錯誤 66
更快地工作 66
自動化的任務 67
編譯 67
測試 68
打包 68
部署 68
構建你自己的構建過程 69
Gruntfile.js 69
使用Grunt外掛程式 69
載入Grunt外掛程式 72
註冊任務 73
看好了 74
總結 77
5數據(類型)、數據(結構)、數據(庫) 79
數據類型 79
為什麼存在不同數據類型 80
基本數據類型 80
組合數據類型 85
動態和靜態類型語言 92
數據結構 93
集合 96
棧 96
樹 97
圖 98
如何選擇高效的數據結構 101
資料庫 101
長期(持久化)存儲 101
關係型資料庫 101
SQL簡介 103
總結 105
6正則表達式 107
Ctrl+F組合鍵:尋找模式 107
在JavaScript中使用正則表達式 108
重複 109
? 109
+ 110
* 110
特殊字元和轉義字元 111
{1, 10}:創造屬於你的超能力 111
匹配任意字元的“.” 112
不要太貪婪 112
從[A-Za-z]理解方括弧 113
字元列表 113
範圍 114
排除 114
電話號碼模式 115
我需要\s 117
方括弧的捷徑 118
限制條件 119
提取標籤 123
高級查找和替換 124
(一行的)開頭和結尾 124
標記 125
全局匹配 125
忽略大小寫 125
多行 125
什麼時候會用到正則表達式 125
grep 125
代碼重構 126
校驗 127
數據抽取 127
總結 127
7何時使用if、for、while 129
操作符 129
比較操作符 129
邏輯操作符 130
一元操作符 132
二元操作符 132
三元操作符 135
“真”和“假” 137
“語法糖” 139
循環遍歷一個數組 140
遍歷圖片 140
嵌套循環 141
你需要停下來 142
無限循環 144
再停一下 145
當你不知道什麼時候停下 145
何時執行 145
事件 145
監聽器 146
定時任務 147
逾時 147
在事情出錯前接住它 148
編寫健壯的代碼 149
總結 149
8函式和方法 151
函式結構 151
定義 152
調用 152
參數 153
調用棧 155
代碼封裝 156
一次做好一件事 156
分而治之 157
物盡其用 161
代碼重用 161
解決通用問題 161
用更少的代碼做更多的事情 161
不要做重複的事(DRY) 163
作用域 164
全局變數 166
本地變數 166
變數查找是怎么工作的 167
總結 170
9編程標準 171
編碼慣例 171
設定標準 172
黑科技,用還是不用 172
立即付款還是先用後付款 173
寫可維護的代碼 173
代碼格式化 174
保持一致 175
空白字元 176
規則不會自己出現:要制定規則 177
使用其他人的成果 179
更快地構建 179
開源軟體 179
由社區建立 180
什麼時候該自己寫 180
最佳實踐 181
文檔 181
計畫 181
測試 181
總結 182
10文檔 183
文檔化意圖 184
自文檔代碼 185
不要將顯而易見的東西寫入文檔 187
過時文檔的危險性 188
用文檔來找bug 189
為自己寫文檔 189
你的記憶力有多好 189
為了學習而記錄文檔 190
超越注釋的文檔 190
給別人寫的文檔 194
記錄你的決定 195
記錄你的資源 195
為了教學而寫文檔 196
總結 196
11計畫 197
三思而後行 197
創建規格說明 198
設計架構 198
畫示意圖 199
嘗試破壞你的系統 200
疊代式計畫 201
為擴展設計 202
你的優先權是什麼 202
用戶體驗 202
性能 203
安全 203
伸縮性 203
截止日期 204
平衡的藝術 204
識別並創建限制條件 204
知道可以做什麼,不可以做什麼 204
總結 206
12測試和調試 207
手工測試 207
邊做邊測 208
嘗試些瘋狂的事 208
吃你自己的狗糧 209
自動化測試 209
單元測試 210
給Kittenbook配置測試 213
失敗時代 217
間諜喜歡我們(我們也喜歡間諜) 218
集成測試 221
儘早發現問題 221
調試 222
錯誤 222
日誌 223
斷點 224
查看、監控和控制台 228
單步執行代碼 229
調用棧 231
找到根本原因 231
編碼、測試、調試、不斷重複 231
總結 232
13授人以漁:如何用一生學習編程 233
如何搜尋 233
找到正確的關鍵字 234
以終為始 236
識別高質量資源 236
個人部落格:隱藏的寶藏 237
什麼地方、什麼時候,以及怎么問編程問題 237
什麼地方 237
什麼時候 240
怎么問 241
通過教別人來學習 241
總結 242
14構建你的技能 243
做你自己的kittenbook 243
給Facebook重新設計風格 243
添加新功能 244
分享你的kittenbook專屬版本 245
找到你自己的項目 245
解決你自己的問題 246
志存高遠 246
獲得幫助,提供幫助 247
開源項目 247
GitHub 247
找項目 248
貢獻的不同方式 248
創建你自己的項目 249
免費線上教育 249
歐拉項目 249
Udacity 250
Coursera 250
codeacademy 251
Khan Academy(可汗學院) 251
教程 251
付費教育 251
讀書 252
Udacity和Coursera 252
Treehouse 253
總結 253
15高級主題 255
版本控制 255
為什麼使用版本控制 256
和團隊一起工作 257
Subversion 260
Git 260
OOP(面向對象編程) 266
類 266
繼承 267
實例 268
設計模式 268
發布訂閱 268
中間人 269
單例 270
總結 270