当前位置:  开发笔记 > 编程语言 > 正文

如何将常见的C++命名约定与库的命名约定进行协调

如何解决《如何将常见的C++命名约定与库的命名约定进行协调》经验,为你挑选了3个好方法。

大多数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++约定.编写包装库功能的类或方法很痛苦,因为类似的东西以不同的样式名称结尾.

那么,您如何协调这些不同的命名约定?



1> Rob..:

Diomidis,我分享你的痛苦,多年来花了很多时间在不同的方案之间切换,试图找到适合我使用的不同库/框架(MFC和/或STL/Boost)的东西.使用单个框架(例如STL)时,您可以尝试复制它使用的命名约定,但是当您引入不同的框架时,它很容易崩溃.

最后,我为我编写的所有新代码采用了单一样式(基于Google C++样式指南),并且我在适当的时候重构旧代码以使用此样式.您无法轻松地协调不同的命名约定,因此不要浪费时间尝试.为您的团队/部门/公司实施一个计划并坚持下去 - 但是不要挂断使用混合方案时代码看起来有多"丑陋".

谷歌C++指南非常好恕我直言 - 有一些小修改.在这里查看指南:

http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml


我正在考虑使用类似于谷歌指南的东西,但它们与STL不能很好地混合,这就是我问这个问题的原因.我想我被Java的绝对秩序宠坏了.

2> Motti..:

采用C++的一种方法是naming_convention,这就是文献中大多数代码示例所做的事情.

我慢慢地看到这些约定转移到生产代码中,但这是一场反对MFC命名约定的战斗,这些约定在很多地方仍然存在.

与旧标准作斗争的其他风格差异是使用尾随下划线而不是m_表示成员.


使用C++标准库命名约定的一个优点是,您自己的类容器类变得更容易与STL容器兼容.例如,你可以在具有`push_back()`的类上使用`back_insert_iterator`,但不能在具有`pushBack()`的类上使用`back_insert_iterator`.
我同意Motti:虽然我更喜欢camelCase风格,但是STL使用的是naming_convention,因此可以被认为是C++的"默认"风格......但是Win32 API/.NET是PascalCase,C API是所有关于六个长的有趣的功能名称...所以,最后,拿起你的毒药...... ^ _ ^

3> Jim Buck..:

为什么需要调和?只要代码编译,并且您可以完成工作,不要担心它.


因为对某些人(比如我)而言,作为程序员的一部分乐趣就是代码的美学.我的代码是诗歌,只要我能做到这一点,而不会减损手头的任务.
推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有