1

私はJavaの初心者です。いくつかの設計上の質問があります。

次のことを行うクローラー アプリケーションがあるとします。 1. URL をクロールしてそのコンテンツを取得する 2. コンテンツを解析する 3. コンテンツを表示する

  1. 関数を実装するか、クラスを実装するかをどのように決定しますか? -- パーサーはクローラー クラスの関数にする必要がありますか、それとも他のアプリケーションでも使用できるようにそれ自体をクラスにする必要がありますか? -- クラスである場合、保護されたクラスまたはパブリック クラスである必要がありますか?

  2. public クラスと protected クラスのどちらを実装するかをどのように決定しますか? -- たとえば、解析されたコンテンツから統計情報を生成するクラスを作成する必要がある場合、そのクラスを保護する必要があるか (クローラー クラスのみがアクセスできるようにするか)、またはパブリックにする必要がありますか?

ありがとうロン

4

3 に答える 3

2

アンディの答えはとても良いと思います。いくつか追加があります:

クラスが将来拡張されると思われる場合は、すべてのprivateメソッド (存在する場合) を に設定できますprotected。このようにして、将来の拡張クラスもこれらにアクセスできます。

{ }メソッドは、スクロールせずに左括弧と右括弧 ( ) が見える範囲よりも長くしてはならないというルールが気に入っています。メソッドがそれよりも長い場合は、いくつかのメソッドに分割してみてください ( privateprotectedまたはpublicお好みで)。これにより、コードが読みやすくなり、コード行を節約することもできます。

メソッドが大きくなり、それをいくつかのメソッドに分割したとしましょうprivate。これらの新しいメソッドが最初の「マザー」メソッド内でのみ使用される場合、そのすべてを独自のクラスに移動することは理にかなっています。このようにして、元のクラスを小さくし、読みやすくします。さらに、元のクラスの機能と混同されないため、新しいクラスの機能が理解しやすくなります。

于 2010-05-05T00:09:59.670 に答える
2

この種の質問に対して私が見た最良のガイダンスは、「SOLID Principles of OO Design」です。

http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

これらの原則の中で最も基本的なものであり、最初の質問に答えるようなものは「単一責任の原則」です。これは、「クラスには、変更する理由が 1 つだけある必要がある」ことを示しています。つまり、クラスはそれぞれ 1 つのことを行う必要があります。その 1 つの動作方法を変更する必要が生じた場合、変更するクラスは 1 つだけです。できれば、そのクラス内の 1 つの場所だけで変更できます。あなたのケースでは、URL からコンテンツを取得するクラス、それを何らかのメモリ内データ構造に解析する別のクラス、データを処理する別のクラス (必要な場合)、さらに別のクラス (またはクラス) を使用して、必要な形式でコンテンツを表示します。もちろん、クラスに熱中することもできますが、通常は、多くの小さなテストを行う方が簡単です。

public と protected に関する質問は、このコードをどのように使用する予定かによって異なります。クラスがライブラリの外で独立して使用できる場合は、それを公開することを考えることができますが、特定のタスクまたは他のクラスに関連付けられたタスクを達成する場合は、おそらく保護される可能性があります。たとえば、URL からコンテンツを取得するクラスは優れた汎用クラスなので公開できますが、特定のタイプのデータ操作を行うクラスはライブラリの外では役に立たない可能性があるため、公開することができます。保護されています。全体として、常に白黒であるとは限りませんが、最終的には、どちらの方法でも通常は大したことではありません.

于 2010-05-04T23:59:30.197 に答える
1

私は、クラスを特定の「メソッド」を実行できる「人」と考えるのが好きです。

あなたの場合、どの URL かを伝えれば、その URL のコンテンツを取得できる人がいます。

それから、コンテンツの解析が得意なもう一人の人物がいます。彼はローマと呼ばれるツールでそれを行っていると思いますが、よくわかりません。彼はその秘密を守っています(ヒント;))

次に、物を表示する3番目の男がいます。彼は少し遅れており、「別の男」が作成したものしか理解できませんが、それは問題ありません。

最後に、プロジェクトには上司が必要です。上司は他の 3 人に命令を出し、メッセージをやり取りします。

ps:クラスを保護するかどうかについては、私は本当に考えたことはありません。通常、それらは特定の理由なしに単に公開されています。痛くないのになんでわざわざ?

于 2010-05-05T10:23:54.910 に答える