枚举设计
枚举提供成组的常数值,它们有助于使成员成为强类型以及提高代码的可读性。枚举分为简单枚举和标志枚举两种。简单枚举包含的值不用于组合,也不用于按位比较。标志枚举应使用按位 OR 操作进行组合。标志枚举值的组合使用按位 AND 操作检查。
下列指南介绍了枚举设计的最佳做法。
一定要使用枚举强类型化参数、属性和表示值集的返回值。
一定要优选使用枚举而不是静态常量。
下面的代码示例演示了不正确的设计。
1: public static class BadFurnishings
2: {
3: public static int Table = 1;
4: public static int Chair = 2;
5: public static int Lamp = 3;
6: }
下面的代码示例演示应使用来代替静态常量的枚举。
1: public enum GoodFurnishings
2: {
3: Table,
4: Chair,
5: Lamp
6: }
不要对开放集(如操作系统版本)使用枚举。
向已提供的枚举添加值会中断现有代码。有时可以接受这种做法,但不应在可能出现这种情况的场合设计枚举。
不要定义供将来使用的保留枚举值。
某些情况下,您可能认为为了向提供的枚举添加值,值得冒可能中断现有代码的风险。还可以定义使用其值的新的枚举和成员。
避免公开只有一个值的枚举。
一定不要将 sentinel 值包括在枚举中。
Sentinel 值用于标识枚举中的值的边界。通常,sentinel 值用于范围检查,它不是一个有效的数据值。下面的代码示例定义一个带有 sentinel 值的枚举。
1: public enum Furniture
2: {
3: Desk,
4: Chair,
5: Lamp,
6: Rug,
7: LastValue // The sentinel value.
8: }
9:
作者:GangWang
出处:http://www.cnblogs.com/GnagWang/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。