首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个关于编程规范的有关问题

2012-02-12 
一个关于编程规范的问题我读过一些C++方面的书,也做过一些开发,但项目经验并不丰富,今天读gloox(Jabber协

一个关于编程规范的问题
我读过一些C++方面的书,也做过一些开发,但项目经验并不丰富,今天读gloox(Jabber协议的客户端API,   http://camaya.net/gloox)的源代码,发现一个现象,它在定义任何一个类的时候,都是这样定义的
如:Client类:
#include   "macros.h "
class   GLOOX_API   Client   {
...
}
在macors.h中,GLOOX_API的定义如下:
#ifndef   GLOOX_API
#       define   GLOOX_API
#endif
这种写法从编程的意义上说GLOOX_API是没有意义的,而这个软件包的编程风格很好,所以我想是不是编程规范方面的一些比较好的习惯。
请指教
因为不是什么关键问题,就给20分吧,分不在多,呵呵

[解决办法]
为了提高 Client类 的移植性 ......

可能有的使用环境下,
定义了 一个有意义的GLOOX_API,
所以,
在 Client类 的定义中使用的是 class GLOOX_API Client { ...

也有可能没有定义,(因为不会只有一个 macors.h文件独立存在,可能它和多个和文件被同时包含,而在其他的 和文件中可能定义了这个宏, 也可能都没有定义 )
所以,在macors.h中,
使用
#ifndef GLOOX_API
# define GLOOX_API
#endif
(在没有定义 GLOOX_API 的情况下, 定义该宏, 防止class GLOOX_API Client 出错)
[解决办法]
一般来说,正规的公司都会有一个编程风格的。
至于个人使用的,可以参考msdn介绍匈牙利命名法的部分,里面甚至对注释格式都有了说明。
[解决办法]
有时候定义空宏仅起注释作用,比如在有些大的工程里就可以看到类似:

ABSTRACT class App1 { ... };
SEALED class App2 { ... };
PRIVATE class App3 { ... };

这样的代码,通常类似ABSTRACT SEALED PRIVATE等都定义为空,除要是为了读代码或者维护代码的人能够理解其用意。

[解决办法]
这是保护符,在文件内部包含保护符保护头文件,以避免在多次包含时重新定义。一般采用以下格式。 #ifndef guard #define guard //....文件内容 #endif
定义时遵守以下规则:1.保护符使用唯一名称 2.谨遵上面的标准形式。

热点排行