当前位置:  开发笔记 > 编程语言 > 正文

正确命名C#的枚举值

如何解决《正确命名C#的枚举值》经验,为你挑选了2个好方法。

你怎么看,拥有这样一个枚举是一个好主意:

enum AvailableSpace {
   Percent10,
   Percent20,
   SqF500,
   SqF600
}

问题是关于值名称的语义,即百分比和平方英尺.我真的相信这不是一个好主意,但我无法找到和指导等支持这一点.

编辑:这将用于确定实体的状态 - 即作为描述对象状态的只读属性.如果我们知道总空间(即对象本身知道它),我们可以选择在内部进行转换,因此我们要么只有百分比,要么是平方英尺,要么两者都有.争论的焦点是,"两者"并不是一个好主意.

以上是一个例子,但真正的问题是一些数据提供者向我们发送总数(sq.f.)和其他百分比,我的目标是统一用户界面.我可以自由地进行一些近似,因此将根据我们想要提供信息的准确度来调整确切的值.

问题只是关于值名称的语义,而不是内容 - 即,如果将百分比放在(潜在的)int枚举中是个好主意.



1> Franci Penov..:

答案:不,使用枚举表示值不是一个好主意.特别是在两个语义上不同的尺度中的值.您不应该使用枚举值.

原因是:两个量表的枚举值之间的关系是什么,比如Percent10和SqF600?如何扩展代码中可以表示的值列表?你如何对这些值进行比较和算术运算?

建议(没有要求,但在这里是.:-)):您尝试做的语义将更好地反映在包含两个字段的结构中 - 一个用于绝对区域,另一个用于该绝对区域的可用百分比.通过这种结构,您可以使用上面的枚举表示您可以表示的任何内容.例如,为您提供绝对区域的数据提供程序使用区域和100%可用的结构表示.给出百分比的数据提供者用结构表示它们设置的百分比和绝对区域,使得该区域的百分比是数据提供者想要报告的实际可用区域.您可以从两种类型的提供程序中获得数据的"规范化"表示,并且可以添加几个运算符以启用与实例的比较和算术计算.



2> Chris Wenham..:

如果可能的话,我宁愿将你的例子分成两个值,你的枚举是"Percent"和"SquareFeet",第二个值是量词.将它们绑定在一个结构中.

如果上下文允许它,那么创建两个包装类型"Percent"和"SquareFeet"然后创建一些运算符重载可能更好,所以你可以做一些事情,比如"new SquareFeet(500)+ new Percent(20); " 并消除使用枚举.

更新:如果值是行业认可的术语,那么您的命名方案将是合适的,几乎达到符号的程度.例如,使用包含诸如"ISO9001"之类的值的枚举而不是两个值(包含"ISO"的枚举和9001的int)是安全的.如下所示有一个枚举也是合适的:

public enum OperatingSystem
{
    Windows95,
    Windows98,
    Windows2000,
    WindowsXP,
    WindowsVista,
    MacOSClassic,
    MacOSXTiger,
    MacOSXLeopard
}

如果术语"百分比10"和"Sqf500"不是艺术术语或在规范,数据字典等中明确定义,那么将它们用作枚举中的值是不合适的.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有