数据结构与算法实习 实践之三:界面、排错、性能 北京大学信息科学技术学院 ●●●● 主讲:张铭、郝丹 ●●。●● zhang [at] net pku. edu. cn http://www.jpk.pku.edu.cn/pkuipk/course/sijig/shixi/o 2011.8 张铭赵海燕王腾蛟宋国杰,《数据结构与算法实验 教程》(国家十一规划教材),高教社20111月
数据结构与算法实习 ——实践之三:界面、排错、性能 北京大学信息科学技术学院 主讲:张 铭、郝 丹 mzhang [at] net.pku.edu.cn http://www.jpk.pku.edu.cn/pkujpk/course/sjjg/shixi/ 2011.8 张铭 赵海燕 王腾蛟 宋国杰,《数据结构与算法实验 教程》(国家十一五规划教材),高教社2011年1月
●●● ●●● 界面的责任 ●●●●● ●●●● ●●● ●●●● ●●0● ●为调用者提供服务和访问 ●向调用者隐藏实现细节 ●管理资源的分配、释放和共享 ●错误处理
界面的责任 ⚫ 为调用者提供服务和访问 ⚫ 向调用者隐藏实现细节 ⚫ 管理资源的分配、释放和共享 ⚫ 错误处理
●●● ●●●●● 程序界面:为别人用的库 ●●●● ●●● ●●●● ●●0● ●考虑的问题 ●提供的服务 ●统一方便又不过多过滥,正交的基本操作,同样的风格。 信息隐藏 ●哪些可见?哪些私用?访问方式?实现细节? 资源管理 谁管理内存分配和释放?共享信息要拷贝吗 错误处理 ●谁检查错误?报告还是忽略?怎么报告?有何恢复性操作? 制定规范
程序界面:为别人用的库 ⚫ 考虑的问题 ⚫ 提供的服务 ⚫ 统一方便又不过多过滥,正交的基本操作,同样的风格。 ⚫ 信息隐藏 ⚫ 哪些可见?哪些私用?访问方式?实现细节? ⚫ 资源管理 ⚫ 谁管理内存分配和释放?共享信息要拷贝吗? ⚫ 错误处理 ⚫ 谁检查错误?报告还是忽略?怎么报告?有何恢复性操作? ⚫ 制定规范
●●● 程序界面设计原则(1) ●●● ●●●●● ●●● ●●● 单一功能原则 ●●●● ●●0● ●什么是单一功能原则? 个函数完成的功能要单 个类处理的事务范围要单 ●从提供的服务上分析 ●从代码的修改角度分析 ●参考: 《 Head first面向对象分析与设计》 《 Head first设计模式》
程序界面设计原则(1) ——单一功能原则 ⚫ 什么是单一功能原则? ⚫ 一个函数完成的功能要单一 ⚫ 一个类处理的事务范围要单一 ⚫ 从提供的服务上分析 ⚫ 从代码的修改角度分析 ⚫ 参考: ⚫ 《Head first 面向对象分析与设计》 ⚫ 《Head first 设计模式》
程序界面设计原则(2 ●●● ●●●●● ●●●● ●●● 开放/闭原则 ●●●● ●●0● ●什么是开放闭原则? 个类应该对扩展开放,对修改关闭。 ●对新的功能的扩充,应该通过增加新类实现, 而不是修改已有类的代码 ●目的 ●降低程序各部分之间的耦合性,利于程序模块替换。 ●使软件各部分便于单元测试。 ●软件升级时可以只部署发生变化的部分,而不会影响其它 部分
程序界面设计原则(2) ——开放/封闭原则 ⚫ 什么是开放/封闭原则? ⚫ 一个类应该对扩展开放,对修改关闭。 ⚫ 对新的功能的扩充,应该通过增加新类实现, 而不是修改已有类的代码 ⚫ 目的 ⚫ 降低程序各部分之间的耦合性,利于程序模块替换。 ⚫ 使软件各部分便于单元测试。 ⚫ 软件升级时可以只部署发生变化的部分,而不会影响其它 部分
程序界面设计原则(3 ●●● ●●● ●●●●● ●●● 致性和规范性原则 ●●● ●●●● ●●0● 什么是一致性和规范性原则? ●实际是设计风格问题 ●如STL容器提供了一致的界面,即使面对一个 不熟悉的函数,预计应该如何使用它也会变得 很容易
程序界面设计原则(3) ——一致性和规范性原则 ⚫ 什么是一致性和规范性原则? ⚫ 实际是设计风格问题 ⚫ 如STL容器提供了一致的界面,即使面对一个 不熟悉的函数,预计应该如何使用它也会变得 很容易