DDD领域驱动设计批评文集
做强化自测题获得“软件方法建模师”称号
《软件方法》各章合集
“Analysis Patterns”的第3章有这么一句:
A conversion, however deterministic, does not follow that faithfully.
2004(机械工业出版社)中译本的译文为:
翻译基本上是正确的,特别是标红的deterministic翻译为形容词。
2020(人民邮电出版社)中译本的译文为:
看起来好像长得差不多(当然,多了不少字),但实际上意思已经不对了。
这个地方犯的错误,和之前的漫谈文章“怎么老是你?-《分析模式》漫谈25”中提到的把how abstract误作how to abstract类似。
同样,however+形容词,也是形容数量和程度的,意思是“无论再怎么**”,见以下词典截图:
摘自https://www.oxfordlearnersdictionaries.com/definition/english/however
因此,原文:
A conversion, however deterministic, does not follow that faithfully.
翻译过来应该是:
换算无论再怎么确定,也显得不够忠实。
2020中译本的“怎样确定换算方法”,相当于把原文当成“how to determine a conversion method”了,听起来像是GoF的策略模式:
还有一个让译者产生错觉的原因,可能是how或者however后面跟着的那个词,本身就可以作为动词(例如上文提到的abstract)或者存在长得差不多的动词(例如deterministic→determine)。
如果是上面词典截图中的however small、however cold可怎么办呢?
我在《评 “状态和事件本质相同”》中也说到类似错觉:
英语中,规则动词的过去式和过去分词后面都是ed,也许正是这一点让领域驱动设计专家误认为这两个ed是一回事,从而得出了惊天的结论。
碰到不规则动词,这个问题就暴露出来了。
do的过去式是did,不能作为形容词,可以作为形容词使用的是“to do”、“doing”、“done”,这也是我们常见到的状态的名称。
did是一个行为,瞬间发生就结束,done是一个状态,可以停留在那里很久。
混淆过去式和过去分词的知识错误,在领域驱动设计专家翻译的《实现领域驱动设计》中译本中也有体现。
**********
Fowler说“换算是确定的(deterministic)”,是什么意思呢?
就像下面这个公制和英制的换算:
下面这个就不是了:
张三说他重185磅,你在大脑里给他换算一下,把84千克记到系统里,虽然没有大问题(现在定义质量单位都精细到出动普朗克常数了,还能有什么大变化),但还是显得不够忠实,因为张三没有这么说——这就是Fowler的意思。
张三往账户里存一个小目标的港币,你给他换算成美元记到系统里,那就不只是“不够忠实”了,要出大问题的。