文件名称:一组相关的整型常量应定义为枚举-*重构*改善既有代码的设计(带完整书签)
文件大小:1.28MB
文件格式:PDF
更新时间:2024-06-27 17:56:05
C++ 编程规范
规则1.2 一组相关的整型常量应定义为枚举 说明:之所以使用枚举,基于: 枚举比#define或const int更安全,因为编译器会检查参数值是否是否位于枚举取值范围内,从 而避免错误发生。 示例: //好的例子: enum DayOfWeek{sunday,monday, tuesday, wednesday, thursday, friday, saturday}; enum Color{black, blue, white, red, purple}; BOOL ColorizeCalendar(DayOfWeek today, Color todaysColor); ColorizeCalendar(blue, sunday); //编译报错,Blue和Sunday位置错误 //不好的例子: const int sunday = 0; const int monday = 1; const int black = 0; const int blue = 1; BOOL ColorizeCalendar(int today, int todaysColor); ColorizeCalendar(blue, sunday); //不会报错 当枚举值需要对应到具体数值时,须在声明时显示赋值。否则不需要显式赋值,以避免重复赋值, 降低维护(增加、删除成员)工作量。 示例: //好的例子:S协议里定义的设备ID值,用于标识设备类型 enum TDeviceType { DEV_UNKNOWN = -1, DEV_DSMP = 0, DEV_ISMG = 1, DEV_WAPPORTAL = 2 }; 程序内部使用,仅用于分类的情况,不应该进行显式的赋值。 示例: //好的例子:程序中用来标识会话状态的枚举定义 enum TSessionState { SESSION_STATE_INIT, SESSION_STATE_CLOSED, SESSION_STATE_WAITING_FOR_RSP }; 应当尽量避免枚举值重复,如必须重复也要用已定义的枚举来修饰,例如: typedef enum { RTCP_SR = 200, RTCP_MIN_TYPE = RTCP_SR, //must be lowest known type RTCP_RR = 201,