一个多编程语言项目的命名规范

8
我目前正在进行一个项目,该项目融合了几种不同的“编程”语言,每种语言都有自己的命名约定。 是否应该在整个项目中使用相同的命名约定,或者在每种语言中使用不同的名称以达到本地化的效果(即不与框架的其他部分冲突)?
例如,这个项目使用了MongoDB(BSON)、C#、JSON和Javascript。现在,我在每个层次上使用该层次的命名约定来命名事物,然后在每个层次之间编写代码进行转换,例如从BSON到C#模型。另一方面,如果命名约定相同,MongoDb会自动处理这个问题。

1
我假设你所说的是当一个具有相同含义的名称在不同的语言/框架中应遵循不同的句法和词汇规则的情况。例如,当表示人的姓氏的数据元素在C#中被期望命名为"Person.LastName",在XML中为"person/last-name",在SQL中为"T_PEOPLE.F_LAST_NAME"等等。我的假设正确吗? - Yarik
@Yarik,就是这样。我猜大家对此没有太多不同的看法,但我很好奇人们认为在整个项目中保持一致性与符合每种语言惯例之间的权衡。 - Chris Pitman
嗨,感谢您提出这个问题,正是我想知道的。但我想知道函数名怎么样?例如,在C++中常见的是GetFoo(),而在ActionScript中常见的是getFoo() - Marson Mao
你是否在其他地方问过同样的问题?似乎没有多少人在讨论这个问题... - Marson Mao
2个回答

8
二十多年前,当我刚开始我的职业生涯时,我可能会同意保罗的说法,“采用通用命名约定!”:)
今天我的答案不同了。即使您只处理一种编程语言,想出一个合适的命名约定也是一项具有挑战性的任务。对于多种语言/框架来说,拥有通用约定是一个崇高的目标和出色的智力游戏,但总的来说,我认为这是不可行的。不同语言/框架的语法和词汇规则差异太大,无法做到“一刀切”。此外,所使用的语言/框架集合随时可能发生变化,对“通用约定”的适当调整可能会变得代价高昂或时间过长。
因此,我建议首先专注于每种语言/框架(或每组足够相似的语言/框架,例如C和C++)的坚实和合适的约定。这种方法的一个好处是,仅涉及一种语言的项目必须遵守一组看起来不“陌生”的约定。
话虽如此,我相信某些约定可以适用于所有涉及的语言/框架,而不会变得太“陌生”。此外,词汇表应该是整个项目共同的。当然,这主要涉及语义和词汇规则;但是,一些句法规则也可以是通用的。例如:
- 实体名称的词汇规则(例如,“始终使用单数名词”)。 - 首字母缩写的词汇规则(例如,“仅使用广为人知的缩写”)。 - 复合名称的句法规则(例如,“始终使用一般性-具体性序列”)。
以上示例过于简化,但我希望思路清晰:无论哪些约定可以共同使用,都应该共同使用,但始终只会是您所需所有约定的某个子集。

我们在我们的Web应用项目中遇到了类似的问题。后端是用Ruby编写的,前端是用JavaScript编写的。因此,当我们需要将一些对象从后端暴露给前端时,很容易混淆是否应该遵循Ruby常见的蛇形命名法,还是JavaScript常见的驼峰命名法。 - rocksoccer


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接