计算机速成课 第十六集 软件工程
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 之前的版本
- 该版本一版很粗糙,错误很多,经常只在公司内部测试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?