c++ - 为什么 STL/Boost C++ 编码风格与其他人如此不同?

标签 c++ coding-style naming-conventions

我是一个相当菜鸟的 C++ 程序员,但在我对这门语言的有限经验中,大多数标准 C++ 风格指南(例如 Google C++ Style Guidelines )与 STL 和 boost 库中实现的内容背道而驰。

例如,C++ 标准库和 Boost 中的类名总是小写,用下划线分隔单词(例如 std::vectorboost::unordered_mapstd::map::const_iterator),而我看到的大多数 C++ 风格指南倾向于转向 CamelCase 样式(例如 TcpConnectionInt32 )。

这同样适用于方法。标准库和 Boost 对方法和函数使用与类相同的样式(例如 std::map<>::get_equal("foo") ),而大多数样式指南提倡 pascalCase 或 CamelCase。

如果我们将其与 Ruby 之类的语言进行对比,大多数用户将遵守核心库中使用的约定,标准 C++ 库与其他所有人的代码之间存在如此大的差异似乎很奇怪。

有人知道这是为什么吗?

编辑:澄清一下,我只是在谈论肤浅的文本风格(大小写、下划线的使用等),而不是实际的实现风格。

最佳答案

下划线和小写字母是 Bjarne Stroustrup 在“C++ 编程语言”中采用的风格。如果我没记错的话,他曾发表过这样的声明,即首选名称中的下划线,因为对于英语不是主要语言的国际社会来说,它更易于阅读。我不知道他的意见是否正确,但我猜这就是起源。

这是他讨论这个话题的常见问题解答的链接:

http://www.stroustrup.com/bs_faq2.html#Hungarian

解释您特别感兴趣的内容的片段:

I prefer to use underscores to separate words in an identifier (e.g, element_count) rather than alternatives, such as elementCount and ElementCount. Never use names with all capital letter (e.g., BEGIN_TRANSACTION) because that's conventionally reserved for macros. Even if you don't use macros, someone might have littered your header files with them. Use an initial capital letter for types (e.g., Square and Graph). The C++ language and standard library don't use capital letters, so it's int rather than Int and string rather than String. That way, you can recognize the standard types.

关于c++ - 为什么 STL/Boost C++ 编码风格与其他人如此不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13881915/

相关文章:

C++ "No matching constructor for initializing Employee"

c++ - 需要字符来使函数的地址无效吗?

Python 导入机制

css - 命名 BEM 修改器的子项时遇到问题

c++ - 你对 typedef'ing shared_ptr 的约定是什么?

c++ - 反斜杠和引号不计入字符串长度?

c++ - 如何使用 visual studio express 调试到汇编级别?

jquery 使用变量编写样式

c++ - 使用函数调用仿函数

delphi - 我的变量命名约定有名称吗?