知识卡片

嵌套编号解决自调用歧义

普通读书笔记卡 · 772.b

内容

通信图常见的扁平编号(1、2、3…)看似简明,实则在UML中不合法:它无法区分一次调用究竟是被 某方法内部触发,还是被更外层方法直接触发。UML规定用嵌套小数编号(1.1、1.1.1)消除歧义,但 代价是嵌套过深时(如1.1.1.2.1.1)编号本身会同样难以辨认,问题并未真正解决,只是转移了 复杂度。

参考来源

- 位置:《UML精粹:标准对象建模语言简明指南》第12章《通信图》(源文件:_epub-src/EPUB/11.xhtml) - 结论依据:原文明确"图12.1的编号风格简明而常用,但实际上在UML中是不合法的……采用嵌套小数编号是为了解决自调用的模棱两可问题",并承认"嵌套编号可能会变得混乱……会导致这样的序列编号:1.1.1.2.1.1……模棱两可问题没有得到改进,反而更糟糕了"。 - 原始内容:图12.1的编号风格简明而常用,但实际上在UML中是不合法的……采用嵌套小数编号是为了解决自调用的模棱两可问题……如果用图12.1中的扁平编号,就不能辨别getDiscountInfo是在calculateDiscount内调用,还是在整体的calculatePrice方法内调用。