为什么有一个名为strcat
的函数,而不是一个名为stringConcatenation
,stringConcat
或string_concat
或类似的函数?为什么有clrscr
个功能,而不是clearScreen
或clear_screen
?
它是否与过去几天的源代码大小有关,其中每个字节在过大的软盘上都值得金币?还是程序员固有的懒惰加剧了这种情况?这是一个惯例吗?
答案 0 :(得分:21)
这部分是历史性的。
在非常古老的C编译器中,无法保证将使用超过标识符名称的前8个字符来确定唯一性。这意味着,最初所有标识符必须是八个或更少的字符,因此方法名称都缩短了。
有关详细信息,请参阅Identifiers in the C Book。
答案 1 :(得分:2)
当C及其相关工具首次开发时,输入设备并不像现代键盘那样容易使用。我从来没有真正使用ASR-33 Teletype,但据我所知,在这样的野兽上输入stringConcatenation
要比输入strcat
要困难得多(并且没有自动完成,你必须输入没有错别字的整个名字)。激活每个键需要很大的压力。我的现代标准输出也非常缓慢。
这也解释了为什么常见的Unix命令名称如此简洁(mv
和cp
而不是move
或rename
和copy
)。
这也可能也是旧链接器仅支持这些短名称的原因。程序员通常会首先创建短名称,因此使用稀缺内存以允许更长的名称几乎没有意义。
除此之外,还有一个案例,即较短的名字和较长的名字一样好。库函数的名称,无论是strcat
还是stringConcatenation
(或者是stringConcatenate
?String_Concatenate
?stringCatenation
?)基本上是任意的。易于打字并不像以前那么重要,但它仍然是一个考虑因素。