题库系统集成项目管理工程师

系统集成项目管理工程师 · 第三版 · 第5章 软件工程

更换内部存储结构却不影响调用方,信息隐藏解决了什么?

12 道章节练习题
单选题5.3 软件设计3 / 12

索引模块将内部数组换成另一种结构,对外操作、参数、结果含义及其他接口约定均保持不变。调用方原本只使用公开接口,不访问内部数据。最能解释调用方无需随之改写的原则是()。

选择答案
未作答
答案与解析

正确答案 D

调用方依赖的是模块公开承诺的行为,而不是数组的存放方式。内部结构改变但接口约定仍满足,变化就不必扩散到调用方。这体现信息隐藏,选D。

可以把问题反过来想:如果调用方自己去取内部数组的第几个位置,模块一换结构,它就得跟着改。信息隐藏要减少的正是这种对内部表示的依赖,而不是把接口文档也藏起来。接口应说明能调用哪些操作、参数和返回值有什么含义,以及必要的副作用和条件。题干明确其他约定也不变,才支持“不必改写”;只保留同名函数、却改变错误处理或结果语义,不能算满足这一前提。内部替换后仍要验证兼容性,信息隐藏不等于免测试。

选项分析

A
让调用方共同管理内部数据反而增加对具体表示的依赖,结构一变更容易牵动外部代码。
B
隐藏的是不应被依赖的实现细节,接口本身要清楚;省略约定会让调用方只能猜测行为。
C
信息隐藏允许内部实现独立演进,不是通过冻结实现来保证所有代码都永远不变。
D
抓住了对外约定与内部表示的边界,能说明为什么这一内部变化没有迫使调用方修改。

容易混淆的地方

把信息隐藏理解成保密或不写文档,或者以为接口名称没变就足以证明行为兼容。

再巩固一步

  • 检查调用方是否知道了不该知道的内部细节,再检查公开约定是否真的保持,而不只看函数名。
原创章节练习题 · 第三版 · 《系统集成项目管理工程师教程》第3版 · 5.3.1 · 纸书第213页

练习小结

题目纠错

未发送。正式接收渠道尚未接通。

查看纠错信息