Зачем кому-то писать это .foo = new BigDecimal(0).setScale(2);? [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Зачем кому-то писать это .foo = new BigDecimal(0).setScale(2);? [закрыто]

Сообщение Anonymous »

Что, по их мнению, они делают:
  • Инициализирует foo как BigDecimal с двумя десятичными знаками, вероятно, для валютных или финансовых вычислений.
  • Пытается избежать ошибок с плавающей запятой, используя BigDecimal вместо double.
  • Явно устанавливает масштаб, чтобы обеспечить согласованное форматирование или округление. ниже по потоку.
Это многословно и ненужно.
Установка масштаба 2 при нулевом значении не гарантирует точность в будущих операциях.
Существует кумулятивный риск ошибок, не напрямую из-за этой инициализации, но стиль кодирования предполагает плохое понимание, поэтому остальную часть кода BigDecimal этого разработчика стоит закрыть тщательного изучения.
Разработчики могут написать эту строку, чтобы «сопоставить» столбец базы данных с DECIMAL(p,2), но не понимая, как распространяется масштаб.
Эта строка часто является артефактом карго-культа, скопированным из устаревшего кода без понимания последствий. Это не неправильно, но и не оптимально.
Зачем вообще устанавливать масштаб на нулевое значение? Это просто начальное значение, которое, скорее всего, будет переопределено другим присваиванием.
Ноль не имеет дробной неоднозначности. Будь то масштаб 0, 2 или 100, он все равно равен нулю.
Это добавляет шума. Будущие сопровождающие могут подумать, что масштаб здесь имеет значение, хотя это не так.
Если масштаб имеет значение, устанавливайте его в момент назначения, а не инициализации. А если вы инициализируете нулем:
this.foo = BigDecimal.ZERO; // Clean, unambiguous


Подробнее здесь: https://stackoverflow.com/questions/797 ... -setscale2
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»