尽可能避免翻译,因为每次翻译都是额外的工作,并且可能会引入错误。
“域驱动设计”对现代软件工程的关键贡献是通用语言的概念,该语言是项目所有利益相关者使用的一种语言。根据DDD的说法,翻译不应该在团队内部(包括领域专家,即使仅通过规范文档的代理人出现)也不能在团队内部进行翻译(进一步阅读:Eric Evans的“域驱动设计”,尤其是各章)关于无处不在的语言和策略设计)。
也就是说,如果您的业务专家(或您的规范文档)说荷兰语,则在源代码中表达业务问题时,请使用其(荷兰语)术语。不要不必要地翻译成英文,因为这样做会给业务专家和程序员之间的交流造成人为的障碍,这会花费时间并且可能(通过歧义或错误的翻译)导致错误。
相比之下,如果您的业务专家可以用英语和荷兰语来谈论他们的业务,那么您就可以选择该项目的普遍语言,这是一种幸运的情况,并且有一些偏爱英语的正当理由(例如“国际上可以理解和更有可能被标准所使用”),但这样做并不意味着编码人员应翻译商务人士正在谈论的内容。相反,商务人士应切换语言。
如果需求很复杂并且必须精确地实现,那么拥有无处不在的语言就显得尤为重要,如果您只是在进行CRUD,那么内部使用的语言就没有那么重要了。
个人轶事:我在一个项目中,我们将一些业务服务公开为SOAP端点。该业务完全用德语指定,因此不太可能像英语一样重复使用,因为它涉及特定司法辖区的法律事务。但是,一些象牙塔建筑师要求SOAP接口为英语,以促进将来的重用。这种翻译是临时发生的,在开发人员之间几乎没有协调,而只是一个共享的词汇表,导致同一业务术语在Web服务合同中具有多个名称,而某些业务术语在Web服务合同中具有相同的名称。哦,当然,在分隔线的任何一边都使用了一些名称-但含义不同!
如果您仍然选择翻译,请在词汇表中将翻译标准化,在您的完成定义中添加符合该词汇表的内容,然后在评论中进行检查。不要像我们以前那样粗心。