Имеет ли смысл создавать константу для стоимости копейки? Например, если мне нужно было уменьшить сумму на копейку. Как вы думаете, это более читаемо, если в коде сказано:
amount -= Constants.StandardAmounts.Penny
Или мне даже не нужно беспокоиться и просто использовать .01.
В вашем конкретном примере эта конкретная константа на самом деле не имеет смысла. Два наиболее вероятных сценария для вычитания копейки:
Выполнение некоторых очень специфических требований к логике бизнеса/домена:
Если это так, константа не должна быть Penny = .01
, но StandardDeduction = .01
Обработайте более произвольные/текущие математические данные:
Если да, просто используйте числа.
В любом случае "Пенни" бессмысленна. Он не добавляет никакой полезной информации. Это как объявление constant HelloWorld = "HelloWorld"
. Каждый программист, который даже имеет смутное представление о том, что делает ваша заявка (финансовые расчеты), понимает, что такое .01. Константы должны управляться по назначению.
Я бы использовал константу. Не потому, что стоимость копейки изменится, а просто для ясности будущим сопровождающим приложения.
EDIT: Думаю, я также рассмотрю количество мест, в которых будет использоваться это значение.
Я бы поставил декремент в метод, а затем назвал этот метод соответствующим образом (т.е. держаться подальше от копейки в названии). Так, например, если у вас есть приложение для супермаркетов, и каждый клиент получает скидку в 1 копейку, вы можете просто позвонить DeductCustomerLoyaltyAmount(). Это имеет следующие преимущества:
Любой, кто читает код, теперь имеет полное понимание того, почему происходит декремент.
Вы можете изменить значение декремента, не влияя на значение метода.
Ваш код глобализации (для обработки других валют) является централизованным.
Вы можете даже изменить его для лучшей читаемости:
amount -= Standards.USCurrency.Penny