代码之家  ›  专栏  ›  技术社区  ›  MarkKGreenway

用正确的方法命名a或b不是真假的布尔人

  •  0
  • MarkKGreenway  · 技术社区  · 16 年前

    我有一个字段显示某人是打佣金还是收费。

    在sql中,它将是一个位字段。

    我该怎么命名?

    4 回复  |  直到 16 年前
        1
  •  12
  •   Daniel Earwicker    16 年前

    您可能希望使用枚举而不是bool。

    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;
    
        2
  •  2
  •   Eric Mickelsen    16 年前

    最简单的办法就是叫它 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; }
    }
    
        3
  •  1
  •   gbn    16 年前

    我的2个说唱歌手,我会有一个扩展的财产“isfee”来解释更多。

    不过,冒着雅格尼的风险,会有其他类型的吗?例如“转分保”或“持有费”,而不是“支付费”。在这种情况下,对sql中的另一个表进行tinyint查找。

    如前所述,一个c枚举使事情变得更简单。

        4
  •  1
  •   roufamatic RichardJohnn    16 年前

    我会犹豫使用一点这个。你有一对多的关系,碰巧有两种可能的价值观。但未来可能会有更多的关系价值观。有些人可能免费工作,或者需要一笔费用和一笔佣金,或者如果所涉及的金额低于某一固定金额,则需要一笔固定费用。

    相反,使用关系表来保存这些值。最后你会给你的设计更多的灵活性。您还无需在代码中存储任何常量。