为什么缩短C名称?

时间:2011-09-16 17:20:20

标签: c function naming-conventions conventions

为什么有一个名为strcat的函数,而不是一个名为stringConcatenationstringConcatstring_concat或类似的函数?为什么有clrscr个功能,而不是clearScreenclear_screen

它是否与过去几天的源代码大小有关,其中每个字节在过大的软盘上都值得金币?还是程序员固有的懒惰加剧了这种情况?这是一个惯例吗?

2 个答案:

答案 0 :(得分:21)

这部分是历史性的。

在非常古老的C编译器中,无法保证将使用超过标识符名称的前8个字符来确定唯一性。这意味着,最初所有标识符必须是八个或更少的字符,因此方法名称都缩短了。

有关详细信息,请参阅Identifiers in the C Book

答案 1 :(得分:2)

当C及其相关工具首次开发时,输入设备并不像现代键盘那样容易使用。我从来没有真正使用ASR-33 Teletype,但据我所知,在这样的野兽上输入stringConcatenation要比输入strcat要困难得多(并且没有自动完成,你必须输入没有错别字的整个名字)。激活每个键需要很大的压力。我的现代标准输出也非常缓慢。

这也解释了为什么常见的Unix命令名称如此简洁(mvcp而不是moverenamecopy)。

这也可能也是旧链接器仅支持这些短名称的原因。程序员通常会首先创建短名称,因此使用稀缺内存以允许更长的名称几乎没有意义。

除此之外,还有一个案例,即较短的名字和较长的名字一样好。库函数的名称,无论是strcat还是stringConcatenation(或者是stringConcatenateString_ConcatenatestringCatenation?)基本上是任意的。易于打字并不像以前那么重要,但它仍然是一个考虑因素。