为什么在C/C++中大量使用缩写?

Osk*_*son 11 c c++

我最近一直在阅读C和C++,并且无法摆脱C/C++程序员在变量和函数名称中过度使用缩写方式的感觉.我不明白为什么这会有益,因为两者都是编译语言.实际上,我遇到的所有代码都比其他语言更多地使用缩写(当然,我的个人经验).

那么问题就变成了这个; 你有没有想在C/C++中使用缩写的原因?使用较长的变量名称是否存在性能问题,还是只是一种惯例?

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

unw*_*ind 15

这主要是一个惯例.

有一些历史悠久的需要,因为早期的C编译器不保证标识符是显著超过800(或者甚至6)字符在某些情况下(导致MyFantasticFooMyFantasticBar在认为由编译器等).现代编译器没有这么严格的限制,请参阅此答案以获取详细信息.

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


Rod*_*ddy 6

从编程的早期开始就是宿醉 - 在意识到编程的困难部分不是编写代码而是阅读代码之前.


Jam*_*nze 5

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

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