2017-10-05 8 views
1

私のコードの構造とクラスを簡単に保つ方法について質問があります。私は、C#プロジェクトのサービスレイヤを単純化することに取り組んでいます。コードの多くはOOPの実践を考慮しておらず、200行以上のメソッドを持つクラスはほとんどありません。私は小さなメソッドを抽出し始めましたが、これを行う方法に関するクイッククエリがあります。サービス層とクラスの簡略化

たとえば、顧客に固有のファイルディレクトリを取得し、存在するかどうかを確認し、見つからない場合は作成し、最後にこれらのディレクトリのリストを持つオブジェクトを返すメソッドがあります。私は、プライベートメソッドを持たないという原則に固執し、新しいクラスに抽出したいと思いますが、ディレクトリが存在するかどうかをチェックするためのプライベートメソッドを作成し、それらを作成するためのプライベートメソッドを作成し、フォルダ名を取得し、 publicメソッドを使用して、これらのすべてを1つのメソッドと関連付けられたインターフェイスで順番に呼び出します。

これらのプライベートメソッドのそれぞれに対して新しいクラスを作成する必要がありますか?その場合はすべてインターフェイスが必要ですか?あるいはそれらをすべて公開し、他の場所から呼び出すことができますか?

ありがとうございます!

+0

私はこの質問がクローズされると思われます。それにかかわらず、私はそれに近づいています:専用のファイルストレージを持つアプリケーションでは、私が使用したいすべてのファイルパスを提供する 'StorageManager'クラスを作る傾向があります。これは、返されたファイルパスが存在しない場合に自動的に作成されるように設定されています。複数のストレージ(フォルダ構造が異なる)がある場合は、 'StorageManager'から継承し、パス生成をオーバーライドする傾向があります。この方法が客観的に最良の方法であるかどうかはわかりませんが、私はそれをきれいな方法で見つけています。 – Flater

答えて

1

短い答え:あなたはこれらのことをしないでください。

オブジェクト指向の観点から問題にアプローチしたい場合は、メソッドが何をしているのかしばらく忘れてください。コードが約であることを考えてください。可能性のある「ビジネス」関連のものとして「顧客」としか言及していませんでした。他のビジネス関連のものを思いついてみてください。これらのファイルは何ですか?レポート? ActivityLogs?メッセージ? CreditReports :)?

オブジェクト指向は、異なるクラスのメソッドを持つだけではありません。クラスとメソッドは、ビジネス上の意味があります。彼らが何かを意味するわけではないなら、最初にそれらを持つ本当の理由はありません!

「StorageManager」、「StorageUtil」などは、ビジネス上の意味が全くないため存在してはいけないことも明らかです。

アプリケーションが約(もの)であることを見つけ出すことから始め、特定の責任を適切なものに移すことができます。

+0

ありがとうございます。これにより、私は別の視点からプログラムを見ていました。私は注文ファイルを扱っているので、私はこれにビジネスロジックを適用することができます。したがって、注文ファイルの処理に関連するクラスを作成する場合は、プライベートメソッドを使用するか、オーダーファイル処理の一部に関わる新しいクラスを作成する方がよいでしょう。最後に、それらにもインタフェースが必要です.....私はリポジトリとサービス層のすべてがインタフェースを持つ必要があると仮定します。 – Boggot