計算機速成課 第十六集 軟件工程

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 之前的版本
    • 該版本一版很粗糙,錯誤很多,經常只在公司內部測試
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章