我应该怎样命名我的班级,以美元和美分为单位存储费用/价格/金额单位为加元/美元long
?我有“PriceInDollars”,但我不喜欢那样,我总是忘记它。有任何想法吗?Java - 名称为钱类
编辑:显然我应该使用BigDecimal
,而不是重新发明轮子。我想我会用它。尽管我尝试做自己的课,但我学到了很多东西。
请看我的其他问题here!
我应该怎样命名我的班级,以美元和美分为单位存储费用/价格/金额单位为加元/美元long
?我有“PriceInDollars”,但我不喜欢那样,我总是忘记它。有任何想法吗?Java - 名称为钱类
编辑:显然我应该使用BigDecimal
,而不是重新发明轮子。我想我会用它。尽管我尝试做自己的课,但我学到了很多东西。
请看我的其他问题here!
我会去与任何Price
或Cost
。无论你选择哪一个,你都可以将其子类化以获得更具体的结果。
Money
和Currency
看起来更像是价格的属性,并不适合作为价格本身的名称。只是我2美分(无法抵抗双关语)。
货币我同意,但如何可以将“货币”解释为价格的一个属性? – 2009-08-31 21:45:44
@Laurence:我正在考虑有不同货币的Money类。作为价格的*属性*可能不是对我的想法的完全准确的描述。尽管如此,金钱确实觉得Mk12正在描述的这个概念太抽象了。 – 2009-08-31 22:07:50
我不同意'货币',因为已经有一个标准的API类java.util.Currency。 (请注意,它只代表货币代码,而不是数量)。 – Jesper 2011-12-14 21:48:15
我会用“现金”
http://www.answers.com/topic/cash 货币票据或硬币的形式;货币。 以货币或支票支付货物或服务。
它不是特定于任何货币类型,您可以添加许多用于转换的动词。
除了现金具有非常具体的内涵外,至少对母语为英语的人来说,表示由政府发行的货币和硬币的具体形式。人们并不认为支票是现金。一些好的或服务“现金”的成本的抽象概念也不是这样;而“现金”是用于实现一定金额的转移的一种形式。 – 2009-08-31 21:29:14
为什么Money
是不好的选择? IMO将java.util.Currency
与java.util.Currency
封装成一个类比BigDecimal
更好的设计。
我不喜欢任何以“InDollars”结尾的东西,因为它不必要地将您的设计损害为美元或CAD。为什么如果这个想法更普遍?
当然,如果需要的话,将货币与金额捆绑在一起是很好的做法。但是,与BigDecimal相比,将“整体和小数部分”的单个优点命名为多个来表示数量。 – 2009-08-31 23:02:31
不用担心四舍五入。 – duffymo 2009-08-31 23:07:38
货币价值:-)
我叫MonetaryAmount
。
首先,我不同意谁说谁使用BigDecimal
。即使你的'支持存储'是BigDecimal
(这非常明智),你应该使用你自己的类,因为有BigDecimal
字段,方法参数等,没有传达任何语义。通常重新使用的类型,如货币金额应该有自己的类。
所有这一切,不写你自己的。有很多这样的图书馆已经存在,并且已经为你考虑了许多问题。就个人而言,我会从Stephen Colebourne(Joda-Time成名)的Joda-Money开始。
此外,'BigDecimal'只存储数字,而不是货币(USD,CAD等)。 – Jesper 2011-12-14 22:22:31
我会称之为Amount
,持有java.util.Currency
和long
与单位。
这是我在不同项目中使用的my own Amount
class。它实现了Comparable
,并有一个toString
方法来格式化显示的金额(尽管它不考虑您的区域设置来格式化金额)。
你有没有考虑过不命名它,但使用许多现有的类之一? http://jscience.org/ – 2009-08-31 18:27:28
同意;这就是BigDecimal的用途。尽管基于长期的解决方案比使用浮动方法要好得多,但您可能仍未涵盖舍入模式,这可以通过金融应用程序中的法律来强制执行。 – 2009-08-31 18:32:05
我不同意。应该使用基元和类似物来构建更具体的对象,但最终,他应该有一些能够独特地捕捉到他所想要的概念的东西。 IPv4地址不是int,也不是String;但它可以用任何一个来表示。可以使用整数和字符串来构建一个IPv4Address类。不过,最重要的是,不要重新发明轮子。如果有人已经创建了一个捕捉对象概念的类,请使用它。 – Omniwombat 2009-08-31 19:16:49