3

これは、Android に固有のベスト プラクティス/パフォーマンス関連の質問です (これは一般的な議論になる可能性があることは理解していますが、Android 環境を考慮して絞り込みたいと考えていました)。

メソッドがあるとしましょう(条件をチェックし、ユーザーをさまざまなアクティビティにリダイレクトします)。このメソッドは多くのクラスで使用されています。

このメソッドをユーティリティ クラスに追加し、静的にして、それを必要とするすべてのアクティビティから呼び出すかどうかを決めることができません。

または

ベース アクティビティを作成し、そこにメソッドを追加します。このメソッドを使用する必要があるアクティビティは、ベース アクティビティから継承します。(この特定のケースでは、単一継承で問題ないと仮定します)。

考え?

編集これらは、これに関連してチェックした関連するSO投稿です。これらに基づいて決定を下すことができませんでした

ユーティリティクラスは悪ですか?

「ユーティリティ」クラスが悪い場合、一般的なコードをどこに配置すればよいですか?

4

1 に答える 1

1

必要に応じてコンストラクターにクラスを注入することもできます。このアプローチを使用すると、インターフェイスの背後でこのクラスを簡単にモックでき、モックを使用してテストを作成できます。

いくつかの擬似コードの例として:

あなたのUtilityクラス:

public class Utility implements IUtility {
    @Override
    public void add() { ... }

    @Override
    public void remove() { ... }
}

あなたのUtility使用クラス:

public class UtilityUsingClass {
    private IUtility utility;
    public UtilityUsingClass(IUtility utility) {
        this.utility = utility;
    }

    public void myMethod() {
        // Use Utility class
        utility.add();
        ...
    }
}

テストでは、次のようになります。

@Test
public void testMyMethod() {
    UtilityUsingClass testClass = new UtilityUsingClass(new UtilityMock());
    testClass.myMethod();

    // assert stuff
}

UtilityMock:_

public class UtilityMock implements IUtility {
    @Override
    public void add() { // Implements mock logic ... }

    @Override
    public void remove() { // Implements mock logic ... }
}
于 2016-06-24T07:57:05.187 に答える