2009-08-31 43 views
0

我应该怎样命名我的班级,以美元和美分为单位存储费用/价格/金额单位为加元/美元long?我有“PriceInDollars”,但我不喜欢那样,我总是忘记它。有任何想法吗?Java - 名称为钱类

编辑:显然我应该使用BigDecimal,而不是重新发明轮子。我想我会用它。尽管我尝试做自己的课,但我学到了很多东西。

请看我的其他问题here

+1

你有没有考虑过不命名它,但使用许多现有的类之一? http://jscience.org/ – 2009-08-31 18:27:28

+0

同意;这就是BigDecimal的用途。尽管基于长期的解决方案比使用浮动方法要好得多,但您可能仍未涵盖舍入模式,这可以通过金融应用程序中的法律来强制执行。 – 2009-08-31 18:32:05

+0

我不同意。应该使用基元和类似物来构建更具体的对象,但最终,他应该有一些能够独特地捕捉到他所想要的概念的东西。 IPv4地址不是int,也不是String;但它可以用任何一个来表示。可以使用整数和字符串来构建一个IPv4Address类。不过,最重要的是,不要重新发明轮子。如果有人已经创建了一个捕捉对象概念的类,请使用它。 – Omniwombat 2009-08-31 19:16:49

回答

6

我会去与任何PriceCost。无论你选择哪一个,你都可以将其子类化以获得更具体的结果。

MoneyCurrency看起来更像是价格的属性,并不适合作为价格本身的名称。只是我2美分(无法抵抗双关语)。

+0

货币我同意,但如何可以将“货币”解释为价格的一个属性? – 2009-08-31 21:45:44

+0

@Laurence:我正在考虑有不同货币的Money类。作为价格的*属性*可能不是对我的想法的完全准确的描述。尽管如此,金钱确实觉得Mk12正在描述的这个概念太抽象了。 – 2009-08-31 22:07:50

+0

我不同意'货币',因为已经有一个标准的API类java.util.Currency。 (请注意,它只代表货币代码,而不是数量)。 – Jesper 2011-12-14 21:48:15

1
  • Currency
  • Money
  • Price
  • Value(我不会,虽然)
+0

感谢您的快速回答。我不想和货币一起去,因为它是一种特定货币的金额,而不是货币本身。价值不够具体,价格远远低于我的价格,我想我不需要指定InDollars ......除非别人知道,否则我会继续这样做。说我更喜欢的东西。谢谢! – mk12 2009-08-31 18:30:22

+0

在以前的生活中,我们使用了更为详细的CurrencyUnits。咩。 – DarkSquid 2009-08-31 18:32:24

0

我会用“现金”

http://www.answers.com/topic/cash 货币票据或硬币的形式;货币。 以货币或支票支付货物或服务。

它不是特定于任何货币类型,您可以添加许多用于转换的动词。

+2

除了现金具有非常具体的内涵外,至少对母语为英语的人来说,表示由政府发行的货币和硬币的具体形式。人们并不认为支票是现金。一些好的或服务“现金”的成本的抽象概念也不是这样;而“现金”是用于实现一定金额的转移的一种形式。 – 2009-08-31 21:29:14

1

为什么Money是不好的选择? IMO将java.util.Currencyjava.util.Currency封装成一个类比BigDecimal更好的设计。

我不喜欢任何以“InDollars”结尾的东西,因为它不必要地将您的设计损害为美元或CAD。为什么如果这个想法更普遍?

+0

当然,如果需要的话,将货币与金额捆绑在一起是很好的做法。但是,与BigDecimal相比,将“整体和小数部分”的单个优点命名为多个来表示数量。 – 2009-08-31 23:02:31

+0

不用担心四舍五入。 – duffymo 2009-08-31 23:07:38

1

货币价值:-)

0

我叫MonetaryAmount

3

首先,我不同意谁说谁使用BigDecimal。即使你的'支持存储'是BigDecimal(这非常明智),你应该使用你自己的类,因为有BigDecimal字段,方法参数等,没有传达任何语义。通常重新使用的类型,如货币金额应该有自己的类。

所有这一切,不写你自己的。有很多这样的图书馆已经存在,并且已经为你考虑了许多问题。就个人而言,我会从Stephen Colebourne(Joda-Time成名)的Joda-Money开始。

+0

此外,'BigDecimal'只存储数字,而不是货币(USD,CAD等)。 – Jesper 2011-12-14 22:22:31

0

我会称之为Amount,持有java.util.Currencylong与单位。

这是我在不同项目中使用的my own Amount class。它实现了Comparable,并有一个toString方法来格式化显示的金额(尽管它不考虑您的区域设置来格式化金额)。