C++编程规范

来源:互联网 发布:蓝海软件 编辑:程序博客网 时间:2024/05/24 13:28

制定规范、统一标准能够极大的节省阅读文档和理解代码的时间,你不用为细枝末节反复的看文档,做测试。因为一般来说,任何一个函数或者组件,都会有大量的细节需要注意,如果没有统一的规范,每个组件或函数都有独自的特性,不得不用大量的文档来说明,而任何文档都不能达到可以不写测试代码,就能完全掌握函数所有特性的程度,更重要的是会加大需要记忆的东西。


所以简洁而统一的标准和规范,就变得异常重要了。对于C++代码,平时使用的规范有如下一些:


1.  只使用protected和public两种权限控制,实际目的并不是保护,而是告诉使用者,哪些方法和成员(public)是可以使用的;哪些(protected)是内部使用的,外部完全不用理睬。这个用途实际上应该声明为private,但是库或者工具的编写者自己需要继承某些类,这里的protected不是给使用者留的,而是库的开发者自己的接口。

2.  如果是作为库的组件(class),内部成员(protected)命名加一个下划线开头,这种设定,可以一眼看出哪些方法和成员外部是不需要访问的。作为程序代码(非工具类),用小写字母开头来命名成员和函数(下划线是很别扭的命名,能不用就不用)。而供外部使用的方法和成员使用大写开头的命名。

3.  同类函数和成员,把标识类的单词写在前面,而不是后面,比如saveButton,openButton,应该命名为buttonSave和buttonOpen,这样有利于分类,使用查找也很方便,毕竟开发环境是以前面的字母来提示和分类的。

4.  提供最精简的接口,不要预留多个功能基本相同的函数接口。能用3个函数完成的功能,就不要提供5个函数。众多的功能相同或类似的函数并不能提供太多方便,因为使用者往往需要花更多的时间来研究哪个函数是最好的。少量函数能够一眼就看出,你没有别的选择,就只能用某个函数,这不但可以减少查阅文档和测试代码的时间,而且可以减少记忆量,加快使用者熟悉一个库的速度。

5.  不要提供功能太多,太高级的组件,要提供的话,也只提供一个简单的接口。不过对复杂组件,很难用简单接口提供所有功能;这种情况下,宁可不提供全部功能也要精简接口。增加复杂度导致功能需求很少的用户也必须面对一个复杂的接口,对于要求复杂的功能,最好让用户自己由小组件自己实现,不要帮他们实现一个又大又全的组件。因为你不是用户,除非你在编写自己使用的东西,一旦需求变化,你那个大而全要么面临巨大的改动,要么用户根本都不愿意用。这方面,最典型的是MFC,很多人抱怨MFC就是因为它太大了,不管你做什么,哪怕是很小的需求,你必须使用整个MFC,以至于微软自己内部都要搞个WTL。用户使用MFC需要看大量的文档,大量的注意事项,大量的相关联的东西。

6.  这一点是最重要的,也是实现起来需要更多精力的。就是函数和功能尽量保持统一,举个简单的例子,你提供一个函数,这个函数需要传递一个资源句柄进去;现在有两种选择,用户必须释放这个资源或者用户无需释放这个资源。对于第二种情况,用户如果不希望这资源被释放,他就需要先复制一个资源自己保留。Windows的API一般是第一种情形,这样看起来很合理,但是显然另一个问题就是用户必须记得释放那个资源。类似的问题大量存在,这也是编程中需要注意最多,花费查阅资料写测试代码时间最多的地方。原则就是统一,统一的范围越大,表示用户需要最少的注意事项。实际情况往往很复杂,但是统一的标准是一个需要时刻注意的问题;因为大多数情况下,编写函数可能随意度是非常大的,在函数开头写大量的说明,远不如遵循一个统一的标准。


原创粉丝点击