ドル/セントの場合、コスト/価格/金額をCAD/USDで別々に保管するクラスを、私は "PriceInDollars"を持っていますが、私はそれが本当に好きではありません。私はいつもそれを忘れています。何か案は?Java - お金クラスの名前
編集:明らかに私はBigDecimal
を使用して、ホイールを改造しないでください。私はちょうどそれを使用すると思います。私は自分のクラスを作ることをたくさん学んだ。
私の他の質問を参照してくださいhere!
ドル/セントの場合、コスト/価格/金額をCAD/USDで別々に保管するクラスを、私は "PriceInDollars"を持っていますが、私はそれが本当に好きではありません。私はいつもそれを忘れています。何か案は?Java - お金クラスの名前
編集:明らかに私はBigDecimal
を使用して、ホイールを改造しないでください。私はちょうどそれを使用すると思います。私は自分のクラスを作ることをたくさん学んだ。
私の他の質問を参照してくださいhere!
私はPrice
またはCost
のいずれかとなるだろう。どちらを選んでも、より具体的になるようにサブクラス化することができます。
Money
とCurrency
は、価格の属性と同じように見えますが、価格自体の名前としてはあまり適していません。ちょうど私の2セント(馬鹿に耐えられなかった)。私は法案やコインの形で「現金」
http://www.answers.com/topic/cash マネーを使用することになり
通貨私は同意しますが、どのようにして「金」が価格の属性として解釈されるのでしょうか? –
@ラウレンス:私は異なる通貨で来るMoneyクラスを考えていました。価格の*属性*は、私が思っていることの全く正確な記述ではないかもしれません。 Mk12が記述しているクラスの概念はあまりにも抽象的であると感じます。 –
私は '通貨'に同意していません。標準のAPIクラス 'java.util.Currency'が既に存在するからです。 (金額ではなく、通貨コードのみを表していることに注意してください)。 – Jesper
。通貨。 通貨または小切手による商品またはサービスの支払い。
通貨の種類に固有のものではなく、コンバージョンなどのために追加できる動詞がたくさんあります。
現金を除き、少なくともネイティブスピーカーには、政府が紙幣や硬貨として発行する通貨の特定の形式を表す、非常に具体的な意味があります。小切手は現金とはみなされません。また、いくつかの良いサービスやサービスの "現金"のコストの抽象的な概念もありません。むしろ「現金」は、金銭の一部の移転を行うために使用される1つの形式です。 –
なぜMoney
が悪い選択ですか? java.util.Currency
に沿って全体と小数部分をクラスにカプセル化することは、BigDecimal
、IMOより優れた設計です。
"InDollars"で終わるものは好きではありません。なぜなら、デザインを不必要にUSDやCADにぶつけてしまうからです。アイデアがより一般的なのなら、それはなぜですか?
もちろん、必要に応じて通貨を額と一緒に束ねるのは良いことです。しかし、BigDecimalと比較して、量を表現するのに「全体と小数部」の長所を単一の利点として挙げます。 –
丸めに心配はありません。 – duffymo
私は私MonetaryAmount
呼ばれてきました:-)
MonetaryValue。
最初に、私はBigDecimal
を使用すると言うすべての人に同意しません。たとえ 'バッキングストレージ'がBigDecimal
(非常に賢明です)でも、BigDecimal
フィールド、メソッドパラメータなどがセマンティクスを持たないため、独自のクラスを使用する必要があります。通貨金額のようなよく再利用されるタイプは、には独自のクラスがあります。
すべては、あなた自身を書いてはいけないと言いました。すでに存在し、あなたのために多くの問題を考えてきたライブラリがたくさんあります。個人的には、スティーブン・コールボーン(Joda-Time名義人)のJoda-Moneyで始まります。
また、BigDecimalは、通貨(USD、CADなど)ではなく、数値のみを格納します。 – Jesper
Amount
とし、java.util.Currency
とlong
の単位を保持します。
私はさまざまなプロジェクトで使ってきたmy own Amount
classです。 Comparable
を実装し、表示する金額を書式設定する方法を使用しています(金額の書式設定ではロケールは考慮されません)。toString
名前を付けずに既存のクラスを使用していると考えましたか? http://jscience.org/ –
合意。これがBigDecimalの目的です。 long-basedソリューションはfloatを使用するよりはるかに優れていますが、財務アプリケーションでは法律で義務付けられている丸めモードはまだカバーしていない可能性があります。 –
私は同意しません。より具体的なオブジェクトを作成するには、プリミティブなどを使用する必要がありますが、最終的には、彼が行っているコンセプトを独自にキャプチャするものが必要です。 IPv4アドレスはintではなく、文字列でもありません。いずれかで表すことができます。 IPv4アドレスクラスを構築するには、intsとStringsを使用します。とりわけ、ホイールを再発明しないでください。誰かがあなたのオブジェクトのコンセプトをキャプチャしたクラスをすでに作成している場合は、それを使用してください。 – Omniwombat