正确的方法是将A或B的布尔值命名为True False

时间:2010-04-05 15:32:30

标签: c# sql variables

我有一个字段,表明某人是否有佣金或费用。

在sql中它会变成一个字段。

我该如何命名?

4 个答案:

答案 0 :(得分:12)

您可能希望使用枚举而不是布尔值。

public enum Payment
{
    Commission = 0,
    Fee = 1
}

然后,您可以在必要时将其强制转换为整数。

class Thing
{
    Payment ThingPayment { get; set; }
}

var thing = new Thing();
thing.ThingPayment = Payment.Fee;

int bitValue = (int)thing.ThingPayment;

答案 1 :(得分:2)

最简单的方法是将其称为IsCommission(或IsFee)。在C#中,布尔属性通常应以'Is'或'Has'开头,除非该名称已经暗示了布尔特性。如果以后有可能将其他值添加到等式中,请认真考虑将其作为枚举。在这种情况下,你可以称之为CompensationMethod,但那里有很多好的名字。如果您决定坚持使用布尔值,如果您的数据库字段保持布尔值,那么这可能是个好主意,您可以像这样公开您的属性的反转:

protected bool isCommission
public bool IsCommission
{
get { return isCommission; }
set { isCommission = value; }
}
public bool IsFee
{
get { return !isCommission; }
set { isCommission = !value; }
}

答案 2 :(得分:1)

My 2 rappen,我会用“IsFee”扩展属性来解释它。

然而,冒着YAGNI的风险,会有其他类型吗?如“转分保”或“持有费”而不是“支付费”。在这种情况下,tinyint会在SQL中查找另一个表。

如上所述,使用c#枚举可以简化操作。

答案 3 :(得分:1)

我会犹豫不决。你有一对多的关系,巧合的是有两个可能的值。但未来可能会有更多的关系价值观。如果有问题的金额少于一定的固定金额,有人可能免费工作,或者需要收费和佣金,或者收取固定费用。

而是使用关系表来保存值。最终,您将为您的设计提供更大的灵活性。您还可以避免在代码中存储任何常量。