DDD领域驱动设计批评文集
做强化自测题获得“软件方法建模师”称号
《软件方法》各章合集
“Analysis Patterns”的第一章有这么一句:
Modeling in a programming language also presents the danger of tying the models to that language. The model may use features of that language that are not available in other languages.
2004(机械工业出版社)中译本的译文为:
标红的地方,翻译基本可以。
2020(人民邮电出版社)中译本的译文为:
这个意思就有点不对了。
(1)“这样就可以”听起来好像是好事,和前面的danger对不上
danger在于“其他语言不具备这些特性(are not available in other languages.)”(2020中译本未体现这个意思),说“这样就可以”像是为“模型和特定语言绑定”寻找理由:为什么我要用编程语言来建模,因为这样就可以使用该语言的特性呀!
但本文所给出的这一段原文中,并没有为这个做法寻找理由的内容。
2024中译本打算这样译:
用编程语言建模还存在将模型与该语言绑定的危险。模型可能使用该语言的某些特性,而其他语言不具备这些特性。这并不意味着概念模型无法迁移到另一语言,但可能会使这个过程更加困难。
(2)danger
2004中译本翻译为“危险”,这是可以的,但是2020中译本翻译成“风险”,这个就不太合适,会让人误以为原文是risk。
其他地方,例如第三章原文里有risk,2020中译本也同样翻译成“风险”,这怎么区分呢?
这样就让人感觉用词比较随意。
我再举一个例子:
还是刚才那句话,其中有个features,2020中译本翻译成“特性”,这个是对的。
但是,同一章的另一处也有features,2020中译本却翻译成“功能”,会让人误以为原文是function。
关于特性跟功能有什么区别,那是另外一个问题了。
(3)artifact不是“系统”
上图又引出一个新问题:
除了把features翻译成“功能”之外,2020中译本还把artifact(应译为“工件”或“制品”)翻译成“系统”。
如果说作者想说系统、功能,他会用system、function之类的。他既然用了这两个词,我们就应该尽量去体现原文的含义。Folwer这里说的应该就是通用的工程实践,适用于各种artifact。
更为有趣的是,artifact用在软件开发中,本意是指“系统”之外的各种副产品,下图摘自wikipedia:
把artifact译作“系统”,刚好译反了,有一种“买椟还珠”的感觉。
artifact广义上也可以认为是关于系统的所有一切,当然可以包括“系统”在内,但不能说artifact就是系统。