C++ 为什么没有人使用STL命名约定?

C++ 为什么没有人使用STL命名约定?,c++,stl,naming-conventions,C++,Stl,Naming Conventions,使用某种驼峰大小写命名约定。唯一一个使用STL命名约定的项目似乎是boost(很多STL的原型都在这里完成)。我知道有些项目早于STL,但大多数新的代码库(使用STL)都遵循camel大小写命名约定 因此,我的问题是: 为什么没有人使用STL命名约定 您是否建议在新项目中使用STL命名约定而不是camel案例 我看到一些项目对一些“STL类型”类(,)使用STL命名约定,对其他所有类使用camel case。这看起来是一种将基础结构与应用程序代码分离的好方法。你建议这样做吗 (我知道命名约定

使用某种驼峰大小写命名约定。唯一一个使用STL命名约定的项目似乎是boost(很多STL的原型都在这里完成)。我知道有些项目早于STL,但大多数新的代码库(使用STL)都遵循camel大小写命名约定

因此,我的问题是:

  • 为什么没有人使用STL命名约定
  • 您是否建议在新项目中使用STL命名约定而不是camel案例
  • 我看到一些项目对一些“STL类型”类(,)使用STL命名约定,对其他所有类使用camel case。这看起来是一种将基础结构与应用程序代码分离的好方法。你建议这样做吗

(我知道命名约定已经被讨论到了极点。但我认为这个问题以前还没有得到回答。特别是在我看来,拆分命名约定的想法是值得讨论的。)

首先,让我强调,我的回答非常主观,仅基于我的经验,没有任何外部数据或资源支持

一个惯例就是:一个惯例。重要的不是你使用哪一个,而是哪一个对你和那些维护你目前正在使用的代码的程序员来说是可读的和易于输入的

我在C++中使用CamelCase,因为它对我的眼睛更好看,而且我已经习惯了。另一方面,我在C语言中使用下划线和小写函数名——这已经成为一种简单的方式来区分我使用了哪种语言

其他程序员肯定会给你其他的理由——其中大多数或多或少是主观的,对他们或他们所属的开发团队来说都是如此

看看其他语言。C#赞成CamelCase,首字母大写。为什么这比第一个小写好

使用Zend framework的PHP程序员也熟悉Zend命名约定:

Drupal API也是PHP,但使用下划线、小写字母和模块/主题特定前缀

库、框架甚至整个语言可能都有命名约定,出于某种原因,这些约定受到了它们的制作者的青睐。这不会迫使您放弃使用通常的命名约定:)。所以,总而言之,我认为你的问题的答案可以用这样一种愚蠢的方式来回答:仅仅因为:D。因为每个程序员对它感到舒服

至于第二个问题:不,我不建议在任何项目中使用任何惯例。选择最适合你的。您别无选择的唯一情况是,您所在的开发团队出于某种原因希望坚持单一约定(如一致的API)


第三个问题:是的,你可以这样看。我通常为我的类添加前缀,因此很明显,
UmbraModule
TCODConsole
是Umbra或libtcodapi的一部分。至于STL,我不喜欢给它命名。在所有内容前面加上
std::*
可以非常清楚地指示它是否是另一个库的一部分,因此,基础设施/应用程序代码是明确区分的——留下CamelCase与下划线是次要问题:)。

这是风格的另一个问题……如果程序员使用stdlib命名约定,而@andreas没有看到它,这会发生吗?肯定有人在使用这些约定。真正的程序员使用下划线@詹姆斯:我手边没有引文,但至少有一项研究表明,人们必须习惯camelCase,才能很好地阅读它。同一项研究表明,对于下划线,不需要这样的习惯化时期。@mingos:Found it:。再看一次,我发现我对结果的记忆并不完全正确——它们删除了空格,但(显然)没有大写字母来分隔单词,所以这可能并不表明camelCase有多重要。至于我最初的评论,我认为很明显,任何以“真正的程序员”开头的东西都不应该太严肃……最主要的cap变体有时被称为StudlyCaps,以区别于camelCase。哦,谢谢,我不知道那个!这被称为CAMELCASE,而这被称为CAMELCASE。