枚举看似简单, 但真正能用好的人并不多。 我在很多项目中看到了枚举的一些令人诟病的用法, 有时候, 不正确地使用枚举, 让人心烦意乱, 经常产生一些“值移位”等重大问题, 需要定位较长时间。
看看教科书般的业余用法:
enum
{
Red,
Black,
Green,
Blue,
White,
};
这种用法的弊端在于, 当枚举多了后, 不能很快地看出White的值是多少, 那有的人这么搞:
enum
{
Red=0,
Black,
Green=2,
Blue,
White=4,
};
这种间隔N个进行赋值, 还是不能彻底解决问题, 且怕被人插。 那有的人这么搞:
enum
{
Red, // 0
Black, // 1
Green, // 2
Blue, // 3
White, // 4
};
这么多么垃圾的用法啊, 万一别人在枚举中插入一个值, 那么上面所有的注释都会起误导作用。 还是这么写吧:
enum
{
Red=0,
Black=1,
Green=2,
Blue=3,
White=4,
};
对枚举进行显式, 这样, 每个值很清晰, 也不怕被人插了。
OK, 虽然简单, 但要注意。