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 之前的版本
- 该版本一版很粗糙,错误很多,经常只在公司内部测试