web-dev-qa-db-ja.com

Androidアプリケーションを構築する最良の方法は何ですか?

新しいAndroidアプリケーションを開始しています。使用するのに最適な構造は何ですか?

次のように、マルチパッケージデザインにする予定です。

  1. アクティビティを含むメインパッケージ
  2. サービスとデータ層
  3. エンティティークラスを含むエンティティーパッケージ。

    何かアドバイス ?

26
Basbous

まず、それはあなたがしているアプリケーションに依存します。

ユーザーがアプリケーションをどのように使用するかについて、テキストまたは概略の説明を行う必要があります。考えられるすべてのシナリオを修正します。後でテストに使用する例を書き留めます。

何が機能に属し、何が-変更可能な構成に属するかを決定します。シナリオから機能とデータエンティティを抽出します。

シナリオから、アプリがどうなるかを決定します。サービス、アクティビティ、ウィジェット、コンテンツプロバイダー、複雑なシステムなど、さまざまなコンポーネントが含まれます。シナリオに対して決定をテストします。

複雑なシステムの場合、アプリケーションコンポーネント間で機能とデータエンティティを分散します。コンポーネントとそれらが何であるかのリストを作成します(アクティビティまたは他のsmth)。

UIコンポーネントのリストを作成し、その内容を説明します(まだHOWではありません)。これらは後でウィジェットやアクティビティ、フラグメント、またはレイアウトになります。

UIコンポーネントのドラフトレイアウトを作成します。あるパスから別のパスへの単純なパスを作成します。 UIを見てください。シナリオに戻り、それらすべてをドラフトUIで再生します。すべてのUIコンポーネントとクラスは、パッケージまたはパッケージの1つの階層に配置されます。

データエンティティのリストを作成します。何が何になるかを決定します。それらをDBまたは異なるDBのコレクションまたはテーブルとして計画します。それらをクラスとして作成し、パッケージの別の階層または別のパッケージに配置します。ここでは、DBヘルパー(SQLによってDBと通信するクラス)も配置します。

UIおよびデータエンティティにテストデータを入力して起動するためのテストクラス(JUNITまたはそれ以上のTestNG)を作成します。

アダプターは親GroupViewでのみ使用されるため、パブリックである必要はありません。そのため、通常、アダプター用のファイルはありません。

すべてのグローバルを特別な静的クラスに入れるしないでください-これは悪い習慣です。あなたはコードと構成を混ぜています。 この非常に興味深い解決策 を使用します。今のところ、それは私がAndroidで知っている最高のものです。

構成データはリソースに入れる必要があります。それらのいくつかが複雑な場合は、XMLソースとパーサーを使用します。リソースデータのリーダーをグローバル変数にします。それらのすべてが静的であるとは限りません!たとえば、メインのアクティビティインスタンスに属することができます。

コードで構成不可能な定数を使用しないでください!たぶん、あなたの名前だけです:-)。すべての定数が時々非定数になります。

一方、一部のコードが通常のJavaではなく、scripts-データと言語の混合である場合、データを混合することができ、また混合する必要がありますとコード。

常にそうする:何かを書く-何かをバルクに接続する-この新しいもののテストを追加する-この新しいものをテストする-バルクをテストする-繰り返す小さなステップのみ!

編集。テスト駆動開発を使用することもできます-適切なコードの前にテストを記述します。このように、コードの準備ができる前にテストを実行すると、二重のテストが行​​われます。したがって、テストが実際に不正なコードに反応するかどうかを確認します。

11
Gangnus

はい、それはあなたが彼らの仕事に基づいて物事を分類すれば開発を容易にします。あなたは正しい方向にあります。Androidでは、アプリケーションを開発するならば、私は次の構造を使用します、あなたのようなものは似ています

  1. すべての画面アクティビティを含むメインパッケージ
  2. BaseAdapterなどを必要とするListView、GridViewを使用している場合のアダプタークラス
  3. 使用する場合の解析ヘルパー
  4. データベース
  5. エンティティクラスと静的変数を格納するクラス
  6. サービスとレシーバー
7
Tofeeq