1. 引子
- 微軟 office 有大約 4000 萬行代碼
2. 軟件工程
- 這個詞由工程師 Margaret Hamilton 創造
- 她幫助 NASA 在阿波羅計劃中避免了嚴重問題
- 她說過:有點像牙根管治療:你總是拖到最後才做,但有些事可以預先做好
3. 對象 Objects
- 出現原因:解決大型項目中,函數太多的問題
- 解決方法:把函數打包成層級,把相關代碼都放在一起,打包成對象
- 舉例:汽車軟件中的定速巡航函數
4. 面向對象編程
- 定義:把函數打包成對象的思想
- 特點:通過封裝組件,隱藏複雜度
- 核心:隱藏複雜度,選擇性的公佈功能
- 因爲做大型項目很有效,所以廣受歡迎
- 舉例
- 之前把「晶體管」,打包成了「邏輯門」
- 計算機上幾乎所有軟件,遊戲機裏幾乎所有遊戲,都是「面向對象」編程語言寫的
- 比如:C++,C#, Objective-C
- 其他:Python,Java
5. 文檔
- 位置:一般放在一個叫 README 的文件裏,告訴其他程序員,看代碼前先看這個文件
- 作用
- 幫助理解代碼都做什麼
- 好文檔能幫助開發者幾個月後理解自己的代碼,對其他人也很重要
- 還可以提高複用性,讀文檔看怎麼用就行,不用讀代碼
- 也可以直接寫成「註釋」,放在源代碼裏
- 「註釋」是標記過的一段文字,編譯代碼時,註釋會被忽略
6. API
- 作用
- 幫助不同程序員合作,不用知道具體細節,只要知道怎麼使用就行了
- 控制哪些函數和數據讓外部訪問,哪些僅供內部
- 「面向對象」的編程語言,可以指定函數是 public 或 private,來設置權限
- 如果函數標記爲 private,意味着只有同一個對象內的其他函數能調用它
- 如果函數標記爲 public,意味着其他對象也可以調用它
7. IDE
- 代碼在編譯前就只是文字而已,也可以使用記事本或任何文字處理器
- 現代軟件開發者,會用專門的工具來寫代碼。工具裏集成了很多有用功能,幫助寫代碼,整理,編譯和測試代碼。因爲集成了所有東西,因此叫「集成開發環境」,簡稱 IDE
- 所有 IDE 都有寫代碼的界面,還帶一些有用功能,例如
- 代碼高亮,來提高可讀性
- 提供實時檢查,比如拼寫
- 幫助開發者整理和看代碼
- 很多 IDE 還可以直接編譯和運行代碼
- 可以定位到出錯代碼,提供信息,幫你解決問題,這個叫做「調試」
- 調試很重要
- 大多數程序員會花 70% ~ 80% 時間調試,而不是在寫代碼
- 好工具能極大幫助程序員防止和解決錯誤
- VIM 纔是最棒的編輯器
8. 源代碼管理
- 也叫「版本控制」
- check out:從代碼倉庫中遷出 checkout 代碼到自己本地機器上編輯代碼,加新功能,測試代碼
- commit:如果代碼沒有問題了,所有測試通過了,就可以把代碼放回去,這叫提交
- 好處:防止代碼衝突和重複勞動
- 代碼的主版本 (master),應該總是編譯正常,儘可能少 bug
9. 測試
- 可以統稱「質量保證測試」,簡稱 QA
- 一般由個人或小團隊完成
- 模擬各種情況,看軟件會不會出錯,基本上就是找 bug
10. 版本名詞
-
beta 版
- 定義:軟件接近完成,但不是 100% 完全測試過
- 一般是公司對公衆發佈 beta 版,以幫助發現問題
- 用戶就像免費的 QA 團隊
-
alpha 版
- beta 之前的版本
- 該版本一版很粗糙,錯誤很多,經常只在公司內部測試