Java-money类的名称
以CAD/USD为单位将成本/价格/金额存储为美元和美分的独立Java-money类的名称,java,classname,Java,Classname,以CAD/USD为单位将成本/价格/金额存储为美元和美分的独立longs的类,我该如何命名?我有“PriceInDollars”,但我并不喜欢它,而且我总是忘记它。有什么想法吗 编辑:显然我应该使用BigDecimal,而不是重新发明轮子。我想我就用这个吧。不过,我在自己的课堂上确实学到了很多东西 请看我的另一个问题 货币 Money 价格 Value(不过我不会) 我会选择价格或成本。无论您选择哪一个,您都可以将其子类化以获得更具体的信息 Money和Currency似乎更像是价格的属性,而
long
s的类,我该如何命名?我有“PriceInDollars”,但我并不喜欢它,而且我总是忘记它。有什么想法吗
编辑:显然我应该使用BigDecimal
,而不是重新发明轮子。我想我就用这个吧。不过,我在自己的课堂上确实学到了很多东西
请看我的另一个问题 货币
Money
价格
(不过我不会)Value
- 我会选择
价格
或成本
。无论您选择哪一个,您都可以将其子类化以获得更具体的信息
Money
和Currency
似乎更像是价格的属性,而不是价格本身的名称。只有我的2美分(无法抗拒双关语)。我会用“现金”
纸币或硬币形式的货币;货币。
用货币或支票支付商品或服务
它不是特定于任何货币类型的,您可以在其中添加许多动词来进行兑换等。为什么
货币
是一个错误的选择?与IMO的BigDecimal
相比,将整部分和小数部分以及java.util.Currency
封装到一个类中是一种更好的设计
我不喜欢任何以“InDollars”结尾的东西,因为它不必要地使你的设计偏向于美元或CAD。如果这个想法更一般,为什么要这样做呢?货币价值:-)我把我的
货币账户称为首先,我不同意所有人说要使用大十进制。即使您的“备份存储”是BigDecimal
(这是非常明智的),您也应该使用自己的类,因为具有BigDecimal
字段、方法参数等不会传递任何语义。常用的重复使用类型(如货币金额)应该有自己的类
尽管如此,不要自己写。有很多关于这方面的库已经存在,并且已经为您考虑了许多问题。就个人而言,我会从斯蒂芬·科尔伯恩(Joda Time fame)的作品开始。我会称之为Amount
,用单位持有java.util.Currency
和long
这是我在不同项目中使用过的。它实现了Comparable
,并有一个toString
方法来格式化要显示的金额(尽管它在格式化金额时不考虑您的区域设置)。您是否考虑过不命名它,而是使用许多现有类中的一个?同意;这就是BigDecimal的用途。虽然基于长时间的解决方案比使用浮动要好得多,但您可能仍然没有涵盖取整模式,这在金融应用中是法律强制要求的。我不同意。原语和类似的东西应该用来构造更具体的对象,但最终,他应该有一个独特的东西来捕捉他想要的概念。IPv4地址不是int,也不是字符串;但它可以用其中任何一种来表示。可以使用INT和字符串来构建IPv4Address类。但最重要的是,不要重新发明轮子。如果有人已经创建了一个类来捕获对象的概念,请使用它。BigDecimal不携带货币。Java需要一个Money类。如果您需要与金额捆绑在一起的货币,当然可以为此编写一个类。并使用BigDecimal作为金额。除了(可能)包含的货币之外,OP的基于长时间的实现并不是一个更具体的表示,它纯粹是重新发明轮子(糟糕)。一个“更具体的表示法”除了用不同的名称包装一个基类之外什么都不做,这在我看来完全是无用的、破坏性的抽象。谢谢你的快速回答。我不想使用货币,因为它是一种特定货币的金额,而不是货币本身。钱也是一样,价值不够具体,剩下的是价格,这比我所拥有的要好,我想,我想我不需要指定印度群岛。。。除非有人说我更喜欢的话,否则我会同意的。谢谢前世我们用的是更冗长的货币单位。Meh.“除了现金”有非常具体的含义,至少对英语母语的人来说是这样,指的是政府发行的纸币和硬币的具体形式。人们不认为支票是现金。也不是一些商品或服务成本的抽象概念“现金”;相反,“现金”是一种用于转移某种货币金额的形式。我同意货币,但“货币”怎么能被解释为价格的一种属性呢?@Laurence:我想的是一种货币类别,有不同的货币。作为价格的一个属性可能不能完全准确地描述我的想法。但是,对于Mk12所描述的类来说,金钱确实感觉太抽象了。我不同意Currency
,因为已经有了一个标准的API类java.util.Currency
。(请注意,它只表示货币代码,而不是金额)。当然,如果需要,可以将货币与金额捆绑在一起。但是,与BigDecimal相比,说出“整数和小数部分”的一个优点是为了表示金额。此外,BigDecimal
只存储数字,而不存储货币(美元、加元等)。