13

我最近一直在阅读 C 和 C++ 并且不禁动摇 C/C++ 程序员使用缩写方式过度使用变量和函数名称的感觉。我看不出这是有益的原因,因为两者都是编译语言。实际上,我遇到的所有代码都比其他语言更多地使用缩写(当然是我的个人经验)。

那么问题就变成了这个;您是否有理由要在 C/C++ 中使用缩写?使用较长的变量名是否存在性能问题,还是只是一种约定?

编辑:看起来我在这里开了一罐蠕虫。我希望得到一个是/否的答案,而不是关于编码风格的讨论。

4

3 回答 3

17

这主要是一个约定。

有一些历史需求,因为早期的 C 编译器不保证标识符在某些情况下对超过 8 个(甚至可能是 6 个)字符有意义(导致编译MyFantasticFooMyFantasticBar认为相等)。现代编译器没有如此严格的限制,有关详细信息,请参阅此答案

今天,我认为这更像是一个约定/风格问题,C 代码通常很简洁。

于 2012-11-21T09:29:37.290 回答
8

这是编程早期的遗留物——在人们意识到编程的困难部分不是编写代码,而是阅读它之前。

于 2012-11-21T09:42:32.733 回答
5

首先,我认为这不是一般规则;正如 Steve Jessop 在评论中提醒我们的那样,其他语言,如 APL,传统上使用更短的名称,而 Fortran(至少在我使用它时)将最大名称长度限制为六个。

不仅仅是语言,我认为领域也很重要。例如,Unix 程序员倾向于使用比 Windows 程序员更短的名称,这无疑是因为系统 API 使用更短的名称(至少部分是因为 Unix 更老,而且早期的链接器不能处理超过 6 或 8 个符号——尽管这没有解释creat而不是 create)。数学也有缩短名称的传统:在处理数学表达式时使用类似index, 而不是索引的名称会使代码变得不那么 清晰和难以解释,因为数学中第一个索引的传统符号是ii. 许多其他领域或多或少都有首字母缩略词或缩写:当我在电信工作时,规范文档(来自客户)谈到了 TP 和 CX,而不是终结点和交叉连接;在我目前的银行环境中,即使在程序之外,没有人会写“信用违约掉期”或“抵押债务义务”而不是简单的 CDS 或 CDO。因此,如果您在 C++ 中看到较短的名称,可能是因为您正在查看执行不同操作的代码,并且来自一个即使在编程环境之外也经常使用缩写的域。

于 2012-11-21T09:50:06.920 回答