はこれを考えてみましょうか?
例1
public static void main(String... args) {
A a = new A();
// CODE
// CODE
// CODE
// CODE
// ... 100 lines of setting up A
B b = new B(a);
// CODE
// CODE
// CODE
// CODE
// ... 100 lines of setting up B
// CODE
// CODE
// CODE
// CODE
// ... 500 other lines of code using a and b
}
例2
public static A setupA() {
A a = new A();
// CODE
// CODE
// CODE
// CODE
// ... 100 lines of setting up A
return a;
}
public static B setupB() {
B b = new B();
// CODE
// CODE
// CODE
// CODE
// ... 100 lines of setting up B
return b;
}
public static void doFancyAlgorithm(A a, B b) {
// CODE
// CODE
// CODE
// CODE
// 500 other lines of code using a and b
}
public static void main(String... args) {
A a = setupA();
B b = setupB();
doFancyAlgorithm(a, b);
}
明らか
それはわずか3行で構成さているため、実施例2は、読み取りおよびがを理解しやすくなるであろうと異なるため責任はさまざまな方法にカプセル化されています。上記メソッドの実際の実装を知らなくても、メソッドのシーケンスを見るだけで、メインが何をするのかを理解することができます。例1では、理解するためにコードの各行を辿る必要があります。
また、あなたのコードにいくつかの新機能を追加することを検討:A
の新しいインスタンスを設定した場合には今
public static void main(String... args) {
A a = setupA();
B b = setupB();
doFancyAlgorithm(a, b);
A a2 = setupA(); // new instance of a because we absolutely need that
C c = setupC();
doAnotherAlgorithm(a2, c);
}
を、我々はすべてが容易になり、単にリユース方法setupA()
することができます。それ以外の場合は、100行全体を再設定してAを設定する必要があります。
これには別の大きな利点があります。コード内のいくつかの行を変更する必要がある場合は、(コードが発生するすべての場所ではなくメソッド内に1回)で変更するだけで済みます。オーバーライト、コピー貼りエラー、およびそうです。
誰があなたにする必要がありますか? –
あなたはそのコードを書いた人に尋ねるべきです。 –
私は、最良の答えは、ロバートマーティンの "クリーンコード"のコピーを取得し、それを読むことだと思います。なぜそれが良いアイデアなのかを説明する必要があります。このような非常に小さなメソッドでは、すべてを新しいメソッドに入れることは価値がないかもしれませんが、入るのは良い習慣です。 – ajb