大多数C++命名约定规定使用的camelCaseIdentifiers
:即与类(大写字母开头的名称Person
,Booking
)和名称与字段和变量(小写字母开头getPrice()
,isValid()
,largestValue
).这些建议完全不符合C++库的命名规则,其中涉及的类小写名称(赔率string
,set
,map
,fstream
)和names_joined_with_an_underscore
对方法和字段(find_first_of
,lower_bound
,reverse_iterator
,first_type
).使图片更加复杂的是操作系统和C库函数,它们涉及C和Unix中的压缩小写名称以及Windows中以大写字母开头的函数.
因此,我的代码很乱,因为一些标识符使用C++库,C或操作系统命名约定,而其他标识符使用规定的C++约定.编写包装库功能的类或方法很痛苦,因为类似的东西以不同的样式名称结尾.
那么,您如何协调这些不同的命名约定?
Diomidis,我分享你的痛苦,多年来花了很多时间在不同的方案之间切换,试图找到适合我使用的不同库/框架(MFC和/或STL/Boost)的东西.使用单个框架(例如STL)时,您可以尝试复制它使用的命名约定,但是当您引入不同的框架时,它很容易崩溃.
最后,我为我编写的所有新代码采用了单一样式(基于Google C++样式指南),并且我在适当的时候重构旧代码以使用此样式.您无法轻松地协调不同的命名约定,因此不要浪费时间尝试.为您的团队/部门/公司实施一个计划并坚持下去 - 但是不要挂断使用混合方案时代码看起来有多"丑陋".
谷歌C++指南非常好恕我直言 - 有一些小修改.在这里查看指南:
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml
采用C++的一种方法是naming_convention
,这就是文献中大多数代码示例所做的事情.
我慢慢地看到这些约定转移到生产代码中,但这是一场反对MFC命名约定的战斗,这些约定在很多地方仍然存在.
与旧标准作斗争的其他风格差异是使用尾随下划线而不是m_
表示成员.
为什么需要调和?只要代码编译,并且您可以完成工作,不要担心它.