2012-02-22 18 views
0

私はトランザクションを表すために2つのクラスを定義しています。私はTransactionType列挙型を定義する必要があります。列挙型のベストプラクティス

私のクラスのプロトタイプは次のとおりです。

public class Transaction 
{ 
    public enum Type { Income, Outcome } 

    public DateTime Date { get; set;} 
    public Type Type { get; set;} 
    public decimal Amount { get; set;} 
} 

一部の人々はTransactionType列挙は、名前空間スコープで宣言されるべきであると言うが、このタイプはそうIMOの取引にのみ関連していると言うi'would人のためでしょうそれはクラス内で宣言されるべきです。 私はクラスでそれを宣言すると、フィールド型宣言にコンパイラエラーがあります。 名前をタイプする必要がありますか?私はタイプとしてではなく、タイプとして所得を参照する必要があるので、あまりにも推測しないでください。

このトピックについてどう思いますか、ありがとうございます。

答えて

0

のタイプを可能な限り最小限に抑えて定義しようとします。あなたのケースではpublic enum Type { Income, Outcome }は公開されているので、それは本当に問題ではありません。プライベートの場合は、ネストされた型として保持します。

ベストプラクティスは、すべてのパブリックタイプを別々のファイルに保存することです。

+0

しかし、この列挙型は、クラス内に1つのフィールドタイプを記述することのみです。そのクラスを参照するだけです。 – TiagoDias

+0

もしそうなら、それを非公開にして、それを保存することができます。必要ならば、それを別のファイルに移動するのが最善です。 – oleksii

1

enum TransactionTypeを呼び出してクラス外に移動します。その名前はTransaction.Typeのようにわかりやすく、名前の競合の問題を解決します。

+0

しかし、この列挙型は、クラス内に1つのフィールドタイプを記述することのみです。そのクラスを参照するだけです。 – TiagoDias

0

TransactionTypeとします。まだ十分に短いので、コードをもっと読みやすくします。

+0

セルゲイ、それは冗長ではありませんか? – TiagoDias

+0

まあ、私のためではない:)名前は個人的な味や企業コーディングガイドラインの問題です(もしあれば)。私はちょうど私がこの列挙型に名前を付ける方法を提案しました。 –

2

Typeは、System.Reflectionの最も重要なクラスの1つです。それは非常にあいまいなので別の名前を使用します。

+0

別のサンプルを想像してみましょう。異なる名前の同じ問題です。私の問題は次のように単純です:クラス定義の内部または外部の単数形または複数の名前付け! – TiagoDias

+0

すでに他人から言われているように、私的なものであれば、私はそれをクラスの中に置き、そうでなければ外に置きます。複数形または単数形?私は主に単数形を使用しています。しかし、これは私の個人的な好みだけです、私はこれについていくつか深い考えがあるかどうかは分かりません。 – HCL