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