我个人不喜欢snake_case
命名约定,但我接受它是因为C ++标准库。真正令我生气的是一些功能的命名不一致。我可以忍受来自C库的愚蠢命名,如:
但是,C ++是一种较新的语言,应该避免这种愚蠢的缩写和不一致,尤其是当存在fopen()
等名称时。这似乎很明显,但正如我所看到的,标准库开发人员并非如此。
file
- 什么意思std::uniform_int_distribution
?它是std::basic_ios::rdbuf()
还是什么?为什么会以这种方式缩写它?rdbuf
- raw data
的C ++版本仍然无法用下划线分隔它。std::ctype::tolower()
...... - 我甚至无法想象为什么会有人这么想
嗯......好tolower
太长了。让我们的randint()
与random_integer
和实现这个功能更好的名称 - std::default_random_engine
。
你怎么了?!我很确定,还有其他一些具有相同不一致性的例子。我不会提到可以命名为std::uniform_int_distribution
的randint
,因为我习惯了它,但仍然......
最后......不要以这个问题的意见为基础,我的问题是:是否有任何记录的理由以这种方式缩写名称或在某些情况下不在文字之间加下划线?我愚蠢还是真的很奇怪?这真的让名字更难记住。
原因是:人们使用的语言有一种,而不是一个人发明了一种新语言,并且仍然掌握着旧的惯例,那么语言就会发展。
所以你有不一致的地方。
第一个C ++与实际语言非常不同。早期的C ++使用了很多C标准库,所以它应该与这样的库一致。
通常,优秀的语言设计师并不是命名约定(和结构)的最佳人选。他们关心语言,而不是关于编码约定的愚蠢讨论(看看批评者对python,因为它强制以某种方式写[空间识别是在合成文本中])。
据我所知,从第1天开始,只有斯威夫特厌倦了一致的名称约定。