Константы в веб-приложении на C # - PullRequest
2 голосов
/ 29 мая 2009

Имеет ли смысл создавать константу для значения копейки? Например, если мне нужно уменьшить сумму на копейки. Как вы думаете, это будет более читабельным, если код говорит:

amount -= Constants.StandardAmounts.Penny

Или я не должен даже беспокоиться и просто использовать .01.

Ответы [ 4 ]

11 голосов
/ 29 мая 2009

В вашем конкретном примере эта конкретная константа на самом деле не имеет смысла. Два наиболее вероятных сценария вычитания копейки:

  • Выполнить очень специфическое требование логики бизнеса / домена:

    Если это так, константа должна быть не Penny = .01, а StandardDeduction = .01

  • Обрабатывать больше произвольной математики:

    Если это так, просто используйте цифры.

В любом случае «Пенни» бессмысленна. Это не добавляет никакой полезной информации. Это все равно что объявить constant HelloWorld = "HelloWorld". Каждый программист, у которого есть даже смутное представление о том, что делает ваше приложение (финансовые расчеты), понимает, что такое .01. Константы должны определяться целью.

1 голос
/ 29 мая 2009

Я бы использовал константу. Не потому, что изменится ценность копейки, а просто для ясности будущим сопровождающим приложения.

РЕДАКТИРОВАТЬ: Я думаю, я бы также рассмотрел количество мест, где будет использоваться это значение.

0 голосов
/ 29 мая 2009

Я бы поместил декремент в метод, а затем назвал бы этот метод соответствующим образом (т. Е. Держал в стороне от того, чтобы в названии не было ни копейки). Например, если у вас есть приложение для супермаркета и каждый клиент получает скидку в 1 пенни, вы можете просто вызвать DeductCustomerLoyaltyAmount (). Это имеет следующие преимущества:

  1. Любой, кто читает код, теперь имеет полное понимание того, почему происходит уменьшение.

  2. Вы можете изменить значение декремента, не влияя на значение метода.

  3. Ваш код глобализации (для обработки других валют) централизован.

0 голосов
/ 29 мая 2009

Вы можете даже изменить на для лучшей читаемости:

amount -= Standards.USCurrency.Penny
...