计算机速成课 第十六集 软件工程

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 之前的版本
    • 该版本一版很粗糙,错误很多,经常只在公司内部测试
上一篇:1.java介绍


下一篇:第一课-C 语言,IDE, 编译器