我有一个可能很愚蠢的问题......我正在尝试确定键入属性的最佳方法是什么,其值为“新”或“已用”。我使用enum
还是应该使用boolean
(例如IsNew)?如果我选择enum
,我应该将此类型和属性名称称为什么? (public NewOrUsed NewOrUsed {get; set;}< - confusing)
显然,使用enum
我可以声明既不声明值(NONE,NEW,USED),enum
更具未来性(尽管可以声称其他值不存在) )。同样,这种类型和属性的适当名称是什么?
使用boolean
- 它非常简单(使用IsNew或IsUsed)
我知道这很愚蠢,但我很好奇其他人的想法
此致 ž..
如果您更喜欢enum
,请评论类型和属性的适当名称(例如public NewUsedType NewOrUsed {get; set;}
)
答案 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)
我一般反对过度工程,所以我的第一直觉是使用布尔值。
但从概念上讲,它不像是一个逻辑布尔值。感觉就像枚举恰好有两个值。我通常认为条件为new
和used
,而不是new
和not new
。
我希望稍后添加其他Condition
,例如refurbished
。但是当然,由于像Find All References
这样的IDE功能,从单个属性进行重构并不会那么困难。一旦向枚举添加新值,您就需要使用此属性来修饰逻辑。