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