用于输入“新建或已使用”的布尔与枚举

时间:2011-06-13 19:40:28

标签: c# enums naming-conventions boolean

我有一个可能很愚蠢的问题......我正在尝试确定键入属性的最佳方法是什么,其值为“新”或“已用”。我使用enum还是应该使用boolean(例如IsNew)?如果我选择enum,我应该将此类型和属性名称称为什么? (public NewOrUsed NewOrUsed {get; set;}< - confusing)

显然,使用enum我可以声明既不声明值(NONE,NEW,USED),enum更具未来性(尽管可以声称其他值不存在) )。同样,这种类型和属性的适当名称是什么?

使用boolean - 它非常简单(使用IsNew或IsUsed)

我知道这很愚蠢,但我很好奇其他人的想法

此致 ž..

更新

如果您更喜欢enum,请评论类型和属性的适当名称(例如public NewUsedType NewOrUsed {get; set;}

7 个答案:

答案 0 :(得分:7)

  

enum更具未来证据

不是真的。你不知道未来会带来什么。如果您需要稍后更改,请更改它。所以,KISS。跟着:

 public bool IsNew { get; set; }
砰的一声,完成了。继续前进,在其他地方增加价值。

答案 1 :(得分:4)

使用枚举。我称之为Condition。您不需要None值。你可以让它可以为空。

答案 2 :(得分:3)

你在评论中提到“我已经[原文如此]有一个条件 - 它指的是当某事物为Y时使用的条件”(例如二手车/书可以是“公平的”,“像新的”,“薄荷” “条件);)”

所以有了这条信息,我肯定会选择bool。你已经有了一种可扩展的方法来建立条件,所以这更像是一个绝对的东西。你可能在未来的某个时候,你可能需要一些东西,不止一个条件算作“新”说:

public enum ConditionType {Fair, LikeNew, Mint, New}

public ConditionType Condition { get; set; }

public bool IsNew
{
    get { return Condition == ConditionType.New || Condition == ConditionType.Mint; }
}

答案 3 :(得分:2)

对于New我将使用布尔值,在这种情况下枚举将是过度杀伤。

答案 4 :(得分:2)

如果我发现自己经常将布尔值转换为值“new”或“used”,我会选择enum。

如果我对这个值更感兴趣(例如做if(something.isNew)),我会使用布尔值。

答案 5 :(得分:1)

eBay拥有New和New Other,以区分原始包装中销售的商品和以不同包装或无包装销售的商品。我会因为它的可扩展性而得到枚举,你称之为“未来证据”。

答案 6 :(得分:1)

我一般反对过度工程,所以我的第一直觉是使用布尔值。

但从概念上讲,它不像是一个逻辑布尔值。感觉就像枚举恰好有两个值。我通常认为条件为newused,而不是newnot new

我希望稍后添加其他Condition,例如refurbished。但是当然,由于像Find All References这样的IDE功能,从单个属性进行重构并不会那么困难。一旦向枚举添加新值,您就需要使用此属性来修饰逻辑。

未来打样对我来说不太重要。从概念上来说,感觉不干净更重要的是IMO。