(4)
原文:
If so, is there some practical limit to the number of objects that should be allowed to reside in the graph?
中译本译文:
如果是这样,对于存在于这个树中的对象有没有一个实用的数目限制?
我的剖析:
这句的问题,主要还是之前提到的graph译成“树”以及“这个树”,还有allowed的漏译。
建议译文:
如果是这样,对于允许驻留在该图上的对象数目,有没有一些实际的限制?
(5)
原文:
Since one Aggregate instance can reference other Aggregate instances, can the associations be navigated deeply, modifying various objects along the way?
中译本译文:
既然一个聚合可以引用另一个聚合,我们是否可以深度地递归遍历下去,并且在此过程中修改对象呢?
问题一:
“遍历”属于概念不清。
我的剖析:
首先,原文用词的是navigate,意思是“导航”,并没有使用traversal、traverse等词。
traversal、traverse等词在计算机科学的特定场景中可译为“遍历”,意思是访问所有结点。
可是,整体对象在履行责任时,并不一定涉及其所有直接或间接的部分对象。注意,是“不一定”,需要“访问所有结点”的责任当然可以有。
如图8的类图:
图8
某个时刻的对象图可能如图9:
图9
在发生某次责任分配时,有可能只涉及到图9中的某些对象,不存在“遍历”,如图10:
图10(红色箭头表示责任分配)
最简单的组合关联就是类和属性了,在某次操作执行期间,对象并不一定要“遍历”其所有属性的值嘛。
问题二:
“深度地递归”属于概念不清和编造。
我的剖析:
原文是“navigated deeply”,译者也可能是看到deeply之后,想起有“深度遍历”,于是把navigated误解成“遍历”,然后来了一个“深度地递归遍历”。
“深度遍历”属于不严谨用语,都遍历了,无所不至,还不够深吗,难道还有“浅度遍历”不成?严谨的用语应该是“使用深度优先搜索(算法)的遍历”。
不过,为了省几个字,现在不只是口头交流,很多正式出版的书和文章也堂而皇之写“深度遍历”,这是很无奈的事情。
译者特地在“深度”后面插入了一个“地”,似乎说的又不是“使用深度优先搜索(算法)的遍历”,而是说要遍历得很深——又回到前面说的了,都遍历了,无所不至,还不够深吗?
但是再往下看,译者又在“深度地”后面自作主张加了原文没有的“递归”二字,变成“深度地递归遍历”,似乎又转回来了,还是在说“使用深度优先搜索(算法)的遍历”。
可惜,加的“递归”二字又是另一个概念不清。
“深度遍历”不意味着要“递归”,也可以“非递归”啊!
进一步展开来说,各种“递归”都可以改成“非递归”啊!
可能是加上“递归”二字觉得比较有格调吧。
问题三:
漏译了instance
我的剖析:
原因同前,类和对象的概念混淆。
建议译文:
Since one Aggregate instance can reference other Aggregate instances, can the associations be navigated deeply, modifying various objects along the way?
既然一个聚合实例可以引用其他聚合实例,那么关联是否可以向深处导航,沿途修改各种对象呢?
以下是扩展
Eric Evans在“Domain-Driven Design”一书中的很多地方提到关联时,使用了traversal一词,这带来了很多尴尬。
如图11的“Domain-Driven Design”原文:
图11
2005清华版中译本没有译成“遍历”,选择译成“导航”,如图12:
图12
2016人邮版中译本译为“遍历”,如图13:
图13
我现在的观点是,原文用traversal不能说不合适,这个词有很多用法,不能拿后来计算机科学的用法来绑架其它用法。
在翻译上,如果确实是计算机科学中“访问所有结点”的场景,就译成“遍历”,否则可以译成“游历”或其他词。
在这一点上,Vaughn Vernon要小心得多,他大量使用的是navigation,书中只有一个地方用到traversal——“traversal through deep object graphs”。
[改为19:30上课*5天]8月31-9月4日晚剔除伪创新的领域驱动设计-网络公开课
[改为19:30上课*5天]9月12-16晚网课:软件需求设计方法学全程实例剖析
[新增EA027智慧公寓系统]25套UML+EA和StarUML的建模示范视频-全程字幕(2022.7.25更新)
《软件方法》书中自测题-题目全文+分卷自测(1-8章)16套111题
CTO也糊涂的常用术语:功能模块、业务架构、用户需求……[20210217更新]
作者微信:umlchina2