2017-06-06 16 views
0

私は、Excelシートからデータを読み込み、各行を "Sale"というクラスに入れ、その後、リストを操作するプロジェクトに取り組んでいます。 "Reader"というExcelドキュメントを読むために使用しているクラスのリストに売上を追加するか、Mainクラスとそのメソッドでリストを作成する必要があります。私は現在、リーダーのインスタンスを作成する私の主な方法があります。この読者は行をソートする修飾子に「Sales」を渡します。次に、プリンタークラスは、パラメーターとしてリストを取得し、別の文書の同じブックに印刷します。C#プログラムまたはリーダーメソッドでMainメソッドを使用してリストを作成する必要がありますか?

私のプログラムには大きな違いがありますか?もしそうであれば、それはなぜ効率的な組織の面でより良いですか。

+2

'Sales'はおそらく' Sale'アイテムのリストを保持する別のクラスであるべきです。そのクラス内のリストを操作するメソッドを追加できます。 'Reader'メソッドはそれだけでなければなりません。'Sale'オブジェクトを作成するために使用するExcelデータを取り出し、' Sales.Add() 'メソッドを使用してそれをリストに追加します。 – Deolus

+1

'Sale'が行データを表す場合、それはその記憶装置から分離する必要があります。 'List sales'を、' Reader'は 'sales.Add(sale)'を行います。このようにして、ストレージ実装はSaleクラスを変更することなく変更(キューまたはスタック)できます。 – Jasen

答えて

1

Salesに関しては@Deolusに同意します。

SalesReaderは、目的が異なるため、別々にしてください。 ReaderクラスがExcelシートからデータを読み込むために作成された場合、その唯一の目的であるはずです。 Salesクラスでは、今後販売のリストを操作する追加のメソッドを作成できます。どちらか一方をやっ


ウィル私のプログラムのいずれかの大きな違いを生みますか?速度の点で

プログラムを実行している、これは違いをすることはありませんが、保守性の観点から、これはGOLDです。

separation of concernsの完全な例です。あなたのコードを整理し、スパゲッティコードを混乱させないでおくと、将来的にこのコードを維持する時間が来ると、より効率的で効果的になります。したがって、の有意差は、今後これを維持するために&を維持する必要がある場合に発生します。

こちらがお役に立てば幸いです。

1

これは、後で動作するアクション/クラスを定義していないため、難しい質問です。 そのデータを扱う別のクラスがある場合は、リーダークラスのインスタンスをメモリから消去する方がよい場合があります。 あなたのメインクラスにリストを残すことも悪いかもしれませんが、例えばここで値を渡すのか、ここで参照するのかを知ることは重要です。あなたのリーダークラスの値を渡して、メインクラスにそれらの値を保存させて、あなたの仕事クラスに渡すことは、コピーを作成してからCPUに悪い(これにはより多くのステップが必要です)とメモリがあります。あなたのメインクラスはもう通過した後です。

ハードドライブの容量も重要ですが(小規模なアプリケーションではあまり意味がありません)、ハードドライブの使用量が少ないほどメモリや/またはcpu。

あなたの質問は、より効率的なことを明示的に言うのは曖昧ですが、コードの最適化は既存のコードを強化することであり、最初にコード自体を構築することではありません。

関連する問題