2012-01-25 7 views
1

巨大なクラスを分割するのに役立つ助けやツールがありますか? コードはうまく機能しますが、500行以上のクラスは快適ではありません。私はそれがより小さい部分に分割できると確信しています。巨大なクラスを2つに分割するツール

今回私はPythonのツールに興味がありますが、それは数えられないと確信しています。

+0

どのプログラミング言語/環境を使用していますか? – k3b

+0

私はそれが存在することを願っています。メソッドとフィールドの間にグラフを描くことができます(メソッドMはフィールドFを使用します)。このグラフに基づいて、アルゴリズムが示唆することができる。 – pihentagy

+0

私は現在py3kを使用していますが、グラフは言語に依存しないで作成できると思います。 – pihentagy

答えて

6

なぜこれを手動で行うことはできませんか? 500行はあまり扱わない。私は、どんなツールでも、それが目的とする意味でクラスを分けることができるのではないかと疑います。私はそれをあなた自身の上に分割し、コードを再設計/リファクタリングすることをお勧めします。

+0

私は質問 – pihentagy

+0

に私のコメントを追加しました。でも、私はツールが分裂の際に私を助けてくれることを願っています。 – pihentagy

0

まあ、それはあなたが意味する言葉を数えます。 Pythonのような言語に比べて、Javaのような言語のためには、より安全な自動リファクタリングが可能です(Pythonの動的性質のため)。

Pythonでは、それはJavaでイントロスペクションを使用している間getattr()を使用する(「神託」)が正常であるが、より「あなたがする必要がない場合は使用しないでください」のようなものです。このような技術は、自動リファクタリングツールがすべてのリレーションを検出できないため、ほとんど機能しません。

いずれにしても、私はJavaとPythonの両方に対して、リファクタリングのためにEclipseを使用します。それは非常にうまく仕事をします。 Pythonの場合は、pydevプラグインまたはaptanaスタジオが必要です。

+0

はい、リファクタリングはPythonではJavaよりも難しいと私は同意しますが、私は個人的には毎日getattr()を使用しないので、それらの接続が見つからないとうまくいきます。 – pihentagy

1

まず、「快適ではない」というコード500行は何ですか?なぜあなたはクラスを2つの新しいクラスに分割する必要があると思いますか?多分、クラスは大丈夫です(500は巨大ではありません)。あるいは、クラスを3つまたは4つの異なるクラスに分割する必要があります。

これ以上の情報がなければ、ツールを使用することで、それをより小さな部分に分割する必要がある理由を理解できるようになるまで、役立たないと思います。いいえツールどのようにクラスを分割すると言うでしょう。

クラスの単一の責任は何かを自問してください。もしあなたが複数のことを考え出すならば、そのクラスは少なくとも責任の行に沿って分割されるべきです。あなたが6歳になると、かなりの仕事をすることになります。

+0

はい、いいえ、ツールは_how_に分割するように指示しませんが、質問に対する私のコメントに基づいて、本当に良いヒントを与えることができます。 – pihentagy

+0

私はあなたに必要なヒントを与えるツール(学問以外のもの)は認識していません。たとえそれがあったとしても、ツールは自動化されたツールが持っていない知識(AIに近づくだろう)を必要とするため、クラスの設計を手助けすることはありません。 私は、ツールを探すのをやめて、コードの設計とそれぞれのクラスが持つべき責任について考え、考え始めることをお勧めします。 –

関連する問題