Правильный способ назвать логические значения, которые являются A или B, не Истинными Ложными - PullRequest
0 голосов
/ 05 апреля 2010

У меня есть поле, которое указывает, взимает ли кто-то комиссию или комиссию.

В sql это будет битовое поле.

Как мне его назвать?

Ответы [ 4 ]

12 голосов
/ 05 апреля 2010

Возможно, вы захотите использовать enum вместо 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 голосов
/ 05 апреля 2010

Самое простое было бы назвать его 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; }
}
1 голос
/ 05 апреля 2010

Я бы не стал использовать для этого немного. У вас есть отношение один ко многим, которое по совпадению имеет два возможных значения. Но в будущем может быть больше ценностей отношений. Кто-то может работать бесплатно или требовать плату и комиссию, или фиксированную плату, если соответствующая сумма меньше определенной фиксированной суммы.

Вместо этого используйте реляционную таблицу для хранения значений. Вы дадите своему дизайну больше гибкости в конце. Вы также избавляете от необходимости хранить любые константы в вашем коде.

1 голос
/ 05 апреля 2010

Мои 2 rappen, у меня был бы "IsFee" с расширенным свойством, чтобы объяснить это больше.

Однако, рискуя YAGNI, были бы другие типы? Например, «ретроцессия» или «плата за удержание», а не «плата за платеж». В этом случае крошечный поиск в другой таблице в SQL.

И, как уже упоминалось, перечисление c # для облегчения работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...