(1)非结构化编程:
- 所有代码都在一个连续的主程序中
- 一行包含一条语句,带有一个数字标签,表示运行程序执行从一行跳转到另一行
- 引入了:迭代,分支和GOTO
缺点:
- 很难追踪程序逻辑
- 很难合并其他代码
- 修改代码不容易(goto)
- 很难测试特定部分的代码
两种Call and return架构代表的结构化编程
(2)
Main Program and Subroutine(主程序-子程序体系结构):
- 系统由一个主程序和一些分层组织的子程序组成
- 主程序调用高层子程序
- 高层子程序调用底层子程序
采用的是自顶向下的树形结构
优点:
- 对10万行以下的代码的程序设计没有任何问题
缺点:程序超十万行代码时表现很差
- 代码开发越来越慢
- 测试软件和保证可靠性越来越困难
- 功能设计不容易进化(可扩展性差)(因为是树形结构)
- 实际的系统很难按照功能化的观点刻画
- 功能化丢失了数据
- 功能化设计的程序复用性比较差
(3)
Object-oriented Design(面向对象设计)
面向对象设计的原理:基于信息的隐藏
对象:指算法和数据
性质:
- 封装
- 继承
- 动态绑定
- 复用与维护
优点:
- 程序容易维护
- 可复用
- 允许设计人员将问题分解为互相交互的对象的集合