web-dev-qa-db-ja.com

アクティビティコードを読みやすく、保守しやすくするにはどうすればよいですか?

アクティビティが1つしかない小さなアプリを作成しました。私の理解では、アクティビティは1つのクラスの一種のビューおよびコントローラーと見なす必要があります。

しかし、3つのダイアログ(AlertDialogBu​​ilderとそれに付属するすべての匿名内部クラスで作成)を備えた小さなアプリでも、私のアクティビティには500以上のLOCがあり、維持するのが非常に困難になりました。アクティビティには主にAndroidライフサイクルハンドラーとビュー処理が含まれます。ビジネスロジックはごくわずかです。

アクティビティクラスを処理して、読み取りと保守を維持するにはどうすればよいですか?

3
metacircle

Android向けに開発するときは、アクティビティをコントローラー、レイアウト(XML)をビューと常に考えています。レイアウトは、アクティビティ(コントローラー)を介して相互作用し、ビジネスロジックと相互作用します。これが私がたくさん学んだいくつかの間違いです:

  • コンポーネントリスナーを個別のクラスとして保持します。以前は、コンポーネント(主にボタン)の内部クラスとしてそれらを保持していました。これは私のアクティビティコードを純粋な混乱にし、それを編集することは地獄のようでした。
  • アクションごとに個別のアクティビティを試してみてください。これにより、変更が必要な場合にコードに戻るのが簡単になります(したがって、保守が容易になります)
1
Savv

覚えておく必要のあるポイントは次のとおりです。

  • コードは常に異なる方法で分岐してください。たとえば、さまざまなイベントリスナーを登録する場合は、1つのメソッド「registerListeners()」を作成します。

    _public void registerListeners() {
         // your button, listview....components event listeners codes
    }
    _

    次に、onCreate()で、このメソッドを呼び出します。これにより、すべてのリスナーコードが一か所に登録され、読みやすく検索しやすくなります。

  • すべてのコントロールIDの取得は、「initControls」という名前の別のメソッドで行われます。

    _public void initControls() {
         buttonSave=(Button)findviewById(R.id.save);
         listviewItem=(ListView)findviewById(R.id.listviewItem);
         // etc..etc...components
    }
    _

    次に、onCreate()で、このメソッドを呼び出します。これを行うことにより、すべてのコントロールIDを1つの場所に配置し、非常にきれいに見えるようになります。とても簡単に検索できます。

    _onCreate() {
         //after setcontentview
         initControls();
         registerListeners();
    }
    _

願わくば、これがコードの記述についてさらに探求するのに役立つことを願っています。 :)

1
Ripal Tamboli