我应该将我的类以 CAD/USD 存储成本/价格/金额作为long
美元和美分的单独 s 命名?我有“PriceInDollars”,但我不太喜欢它,而且我总是忘记它。有任何想法吗?
编辑:显然我应该使用BigDecimal
,而不是重新发明轮子。我想我会用那个。不过,我确实学到了很多东西,试图自己上课。
请在这里查看我的另一个问题!
我会选择Price
or Cost
。无论您选择哪一个,您都可以对其进行子类化以获得更具体的信息。
Money
并且Currency
看起来更像是价格的属性,并不适合作为价格本身的名称。只是我的 2 美分(无法抗拒双关语)。
首先,我不同意每个说使用BigDecimal
. 即使您的“后备存储”是BigDecimal
(这是非常明智的),您也应该使用自己的类,因为拥有BigDecimal
字段、方法参数等不传达任何语义。像货币金额这样的常用类型应该有自己的类。
说了这么多,不要自己写。有很多库已经存在并且已经为您考虑了许多问题。就个人而言,我会从斯蒂芬科尔伯恩(Joda-Time 成名)的Joda-Money开始。
货币价值 :-)
Currency
Money
Price
Value
(虽然我不会)为什么Money
选择不好?将整体和部分部分封装java.util.Currency
到一个类中是比BigDecimal
IMO 更好的设计。
我不喜欢以“InDollars”结尾的任何东西,因为它不必要地使您的设计偏向于美元或加元。如果这个想法更普遍,为什么要这样做?
我会称它为Amount
,持有 ajava.util.Currency
和 along
的单位。
这是我在不同项目中使用的我自己的Amount
课程。它实现Comparable
并具有toString
格式化显示金额的方法(尽管在格式化金额时它不考虑您的语言环境)。
我打电话给我的MonetaryAmount
。