我应该使用哪种语言来命名我的业务类别?


29

我要求有关此问题的最佳实践。我认为,这仅在客户公司严格属于国家/地区语言而不是英语时才是问题。

如果客户有很多主要是非常特定于域的(例如,德语)表达式,并且混合了一些较小的特定于域的命名。我们的代码注释的语言,类/方法/变量名是英语。您会翻译所有域名专用名称吗?


11
英语。Lingua franca进行编程。
钻机

6
更具“挑战性”的PHP错误消息之一有一个有趣的希伯来语转折:unexpected T_PAAMAYIM_NEKUDOTAYIM。我一生中见过几次,我毫不怀疑应该使用英语。
K.Steff

3
是否有任何特定于德国域的表达式具有非标准字符(例如,umulauts(sp?))?如果您在您所在地区以外的地区雇用程序员,则他们可能无法找到带有必需字符的键盘(我的不是)。是的,有多种方法可以切换“类型化”语言,但是我不想麻烦。
Clockwork-Muse 2012年

2
希腊语-使用非拉丁字母比klingon更好的工作安全性。
怀亚特·巴内特

3
@ X-Zero超出纯ASCII格式会打开蠕虫的“我们使用什么字符编码”功能。通常情况下,您会被咬而不会再去那里。

Answers:


16

我在德国工作,喜欢英语。

有时候,例如特定领域的事情,例如创建“ DATEV”(德国发票/计费软件)模块,我确实使用德语名称。某些德语单词无法正确翻译,例如“ Referenzbuchungsnummer”(ReferenceBookingNum?)或“ Sachkontenlaenge”(..?)。我也确实认为特定领域的事情将以维护恐惧而告终。也许您会记得ReferenceBookingNum与“ Referenzbuchungsnummer”有关,但是您的同事呢?如果存在文档,他们必须研究有关命名的内部文档。如果没有适当的名称,他们将不会非常熟悉该模块。如果所有其他开发人员也都是德国人,那将是不必要的复杂性。但是“ CakeFactory”听起来比“ KeksFabrik”更好;)

因此,这取决于。


2
阅读其他答案后,此答案最能体现我的个人意见。特别要注意的是:翻译所有内容时,“如果所有其他开发人员也都是德国人,这将是不必要的复杂性”。
Zeemee 2012年

1
@Mulmoth:“如果其他所有开发人员也都是德国人,那将是不必要的复杂性” ---您如何确定在某个时间点上,该项目不会在几年内外包给另一个国家?您如何确定某个时间不会在项目中引入非德语开发人员?
珊瑚母鹿

5
@Coral Doe-我认为新的/其他/外包开发人员已经必须深入研究业务领域及其特定表达方式。因此,恕我直言,将客户(然后仍是德国人)所说的内容映射到以德语命名的类而不是用不好/错误翻译的英文名称的方式比较容易。
Zeemee

2
与德国帐单/税收相关的“资料”绝不会外包给非德语国家。在大学里,有人告诉我,所有帐单/税书中有85%是参考德国法律,并且都是用德语写的。全世界。
2012年

3
我同意,但是几乎总是发生的一个问题是,开发人员使用的语言会泄露给用户和其他利益相关者。不是作为ui的一部分,而是您如何谈论问题域。这将不可避免地引起混乱,因为并不是每个人都能像大多数开发人员那样精通英语。
米勒·贝索(MilleBessö)2012年

14

我是挪威人,在一家挪威公司工作,我用英文命名我的对象。当然,某些单词或概念可能没有英文对应物,在这种情况下,人们可能会争辩说,可能会使用母语单词来代替不好的替换或没有含义的直译。当然,这些问题很多可能是因为我们中有些人应该有更好的词汇量,所以我通常问一个同事我是否想不出一个好的英文名字:)

我们的一些工作人员不是挪威人,因此用英语写对他们有好处。能够从欧洲大部分地区聘请程序员对经济有利,因此我的公司也从中受益。

顺便说一句:我记得我曾经读过Hermes的源代码(ebXML b2b实现),如果他们用普通话写作和发表评论,我将很难。


5
我几乎将“学院”编辑成我认为应该是“同事”的内容,但是我不确定这是否是故意的。
雅各布·斯科恩

我当然是指同事:)
Sylwester

Of course some words or concepts might not have a English counterpart-我总是很好奇编程时,几乎就像您可能知道一种不会说英语的设计模式。你有一个简单的例子吗?
Izkata 2012年

5
@Izkata:问题是关于商务舱的。它们通常与特定于国家/地区的法规联系在一起。例如,如果法律强迫您跟踪所有装有危险化学品的卡车的位置,那么您很可能会根据该法律来命名该类别。
MSalters 2012年

9

我认为,由于英语是IT领域的通用语,因此将源代码限制为另一种语言会给其发展带来人为障碍。首先,您要限制可以说一种特定语言的人才库。您在堆栈交换中而不是在本地站点上询问的原因相同。

另外,您也不知道捐款来自何处,去向何处。如果您使用网站中的样本该怎么办?如果产品可以扩展到另一个国家的客户使用该怎么办?如果您需要聘请承包商/外包服务吗?为什么要限制一个游泳池,却不能从世界各地获得最大的健康呢?

可以假定对于某些领域特定的结构是可以的,这些结构不容易映射到其他语言,或者维护了现有的代码库。


9

我的最后一个项目目标是为抵押品和抵押的业务领域建模。我们所有的开发商和公司都来自波兰。我们按照域驱动设计原则构建软件。我们为所有业务实体使用波兰语名称,我认为这是一个很好的选择。我认为,借助这种方法,我们能够避免交流问题。业务领域包含许多我什至都不知道的波兰语术语,更不用说英语翻译了。我们仅使用拉丁字母,所有技术课程均以英语命名。


4
这是一个好点:如果所有领域知识都使用本地语言,并且不存在针对领域概念达成一致的英文名称,那么使用本地语言可能是一个好主意。
约阿希姆·绍尔

7

通常,以单一语言编写的源代码更容易阅读。对于大多数编程语言来说,这意味着您应该用英语编写。

就是说,领域概念存在一个主要问题,这些领域概念很难轻易翻译成英文。一个典型的例子是社会为个人提供的唯一标识符-在美国,最接近的概念是社会保险号,但这并不是准确的映射。名称和电话号码通常映射得很好。

我认为,通常在不容易将准确的映射提供给英语(只有那些)的情况下,必须保留域术语,而其余的保持为英语。它将产生不寻常的标识符,例如KommuneImpl,但对于知道该域的人来说应该立即有意义。


2

开源/国际社区类型的项目

开源和国际社区项目的通用语言是英语。例如,Stack Exchange网站的语言是英语。为了获得最大的可访问性,所有代码和对象名称都应使用英语。

商业项目

大多数国际软件公司都要求代码以英语编写。它是最大的共同点,因此使用英语作为创造连贯性的手段是很有意义的。

许多区域软件公司都使用其母语编写。并非所有人都遵循这种方法,但是从他们的角度来看很有意义-他们对所有开发人员都使用通用语言。

命名业务对象

应该使用团队的编码语言来命名对象。
优先考虑的是开发人员能够就对象和项目需求进行交流。如果团队使用法语编写,则业务对象应使用法语命名。如果它们用英语编码,则用英语命名对象。

您的问题增加了难度,因为客户说的不是您团队的编码语言,而是母语。 您仍应使用团队的编码语言来命名对象。
当业务分析师或开发人员需要与客户就特定业务对象进行沟通时,可能需要将对象名称从编码语言转换为客户语言。根据我的经验,很少与客户讨论特定的代码对象,因此实际上并不需要翻译回客户语言。

命名规则的唯一例外是,当对象没有其他足够简洁的术语来捕获对象的意图时。海事组织,这确实很少见,但有可能发生。但是实际上,口头语言表达特定概念是一样的。“ 外观 ”最初是一个法语术语,但为了表达该概念已被英语改编,是一种常见的设计模式。“ Schadenfreude ”是借用术语的另一个很好的例子,尽管我认为它没有相应的模式。


1
您的最后一段与您的第一段完全矛盾
詹姆斯(James)

@詹姆斯-谢谢!我删除了该部分,因为我现在没有时间澄清我的意思。它本来可以支持,但是没关系。

1
强烈反对。由于您将遇到的几乎每种语言的核心概念都是用英语编写的,因此使用非英语术语会导致源代码的可读性较差。头脑必须不断地在英语和其他语言之间切换。代码应流利且可读。
Mike Adler 2012年

@MikeAdler-目前尚不清楚您是否不同意我建议的一般规则(以团队的语言来命名)或例外情况(这种情况很少见)。

授予。我将澄清:我不同意任何对象都应该以英语以外的其他语言命名。您的第一个标题“开源/国际社区类型的项目”很好地反映了我的观点。之后的一切,我都不买。如前所述,原因是可维护性,我认为这实际上是您所做的每个设计决策(包括命名方案)的首要考虑。
Mike Adler
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.