【问题标题】:Naming Conventions for a Multi-Programming Language Project多编程语言项目的命名约定
【发布时间】:2012-01-20 16:45:44
【问题描述】:

我目前正在开展一个项目,该项目包含几种不同的“编程”语言,每种语言都有自己的命名约定。应该始终使用相同的命名约定,还是应该在每种语言中使用不同的名称以具有原生外观(即不与框架的其余部分冲突)?

例如,这个项目使用 MongoDB(BSON)、C#、JSON 和 Javascript。现在我用该层的约定命名每一层中的东西,然后在每一层之间有代码进行翻译,比如从 BSON 到 C# 模型。另一方面,如果命名约定相同,MongoDb 会自动执行此操作。

【问题讨论】:

  • 我假设您在谈论具有相同含义的名称应该遵循不同语言/框架中的不同句法和词汇规则的情况。例如,当表示一个人的姓氏的数据元素在 C# 中被命名为“Person.LastName”、在 XML 中被命名为“person/last-name”、在 SQL 中被命名为“T_PEOPLE.F_LAST_NAME”等等时.我的假设正确吗?
  • @Yarik 就是这样。我猜对此没有太多选择,但我很好奇人们如何看待在整个项目中保持一致与与每种语言的约定保持一致的权衡。
  • 您好,感谢您提出这个问题,这正是我想知道的。但我想知道函数名呢?例如,在 C++ 中看到 GetFoo() 很常见,而在 actionscript 中看到 getFoo() 很常见。
  • 你在其他地方也问过同样的问题吗?似乎没有多少人在谈论这个问题......

标签: interop naming-conventions multilingual


【解决方案1】:

20 多年前,当我刚刚开始我的职业生涯时,我可能会同意 Paul 的观点,并说“采用通用命名约定!”。 :)

今天我的答案不同了。即使在处理一种编程语言时,提出一个体面的命名约定也是一项具有挑战性的任务。拥有多种语言/框架的通用约定是一个崇高的目标和出色的脑筋急转弯,但总的来说我认为这是不可行的。不同语言/框架的句法和词汇规则过于多样化,无法做到“一刀切”。此外,所使用的语言/框架集随时可能发生变化,适当调整您的“通用约定”可能会变得非常昂贵或非常不合时宜。

因此,我建议主要关注每种语言/框架(或每组足够相似的语言/框架——例如 C 和 C++)的可靠和体面的约定。这种方法的一个很好的结果是,仅涉及一种语言的项目必须遵守一组看起来并不“陌生”的约定。

说了这么多,我相信一些约定对于所有涉及的语言/框架都是通用的,而不会变得过于“外来”。此外,诸如词汇之类的东西应该在整个项目中都是通用的。当然,这主要是关于语义和词汇规则;但即使是一些句法规则也可以是通用的。例如:

  • 实体名称的词汇规则(例如“始终使用单数名词”)。

  • 首字母缩略词的词汇规则(例如“仅使用广为人知的首字母缩略词”)。

  • 复合名称的句法规则(例如,“始终使用通用然后特定的顺序”)。

当然,上面的例子过于简单化了。但我希望这个想法是明确的:任何可以通用的约定都应该是通用的,但它始终只是您需要的所有约定的一部分。

【讨论】:

  • 我们在我们的网络应用项目中遇到了类似的问题。后端是 ruby​​,前端是 javascript。因此,当我们需要从后端向前端公开一些对象时,究竟是应该遵循 ruby​​ 常见的蛇案例,还是 javascript 常见的骆驼案例,这很令人困惑。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多