2

アプリケーションの起動を処理するクラス (Android アクティビティ) があります。アプリケーションには、かなり複雑な起動ルールがいくつかあります。現時点では、スパゲッティの束のように見えますが、リファクタリングの戦略を探しています。

正直なところ、疑似コードを提供するためにハッキングするのに問題があります。一般に、基本的にロジックで体系化された起動のルールがいくつかあります。

手順:

  1. 最後の終了時にエラーをチェックし、必要に応じてローカル キャッシュをフラッシュします
  2. 設定ファイルのダウンロード
  3. 設定を解析し、設定をローカルのネイティブ形式に保存する
  4. 設定の値を使用して、一連の「ハウスキーピング」を行います
  5. 設定の値を使用して、コア データ コンポーネント A をダウンロードします
  6. コンポーネント A を解析し、ローカル キャッシュをロードする

このロジック中に、ユーザー インターフェイスも更新されます。これらはすべて、ジグザグの単一のモノリシック クラスで処理されます。非常に長く、多くの依存関係があり、ロジックを理解するのが非常に難しく、アプリケーションの多くの部分に触れているようです。

手続き型のスタートアップ コードを分割するために使用できる戦略またはフレームワークはありますか?

4

2 に答える 2

2

うーん。あなたの手順に基づいて、さまざまな「懸念」があります。

  1. 設定の読み込みと保存。
  2. サーバーから設定とコンポーネントをダウンロードしています (「コンポーネント」が何であるかはわかりません)。
  3. コンポーネントの読み取りとインスタンス化。
  4. キャッシュをフラッシュして読み取ります。
  5. ハウスキーピング(これが何を伴うのかはよくわかりません)。
  6. UI の更新 (これに何が必要なのかよくわかりません)。

上記の行に沿って、コードをさまざまなオブジェクトに分割してみてください。たとえば、次のようになります。

  1. 設定リーダー
  2. サーバー通信マネージャー (?)
  3. コンポーネントリーダー
  4. キャッシュ

私はそこに行くことがあまりないので、5と6についてはわかりません.

フレームワークに関しては、前述の Roboguice など、依存性注入に役立つさまざまなものがあります。それらは便利かもしれませんし、手動でこれを行う方が簡単かもしれません. ただし、依存性注入を検討する前に、コードを解きほぐす必要があると思います。依存性注入フレームワークが行うことは、オブジェクトを初期化することだけです。最初に、オブジェクトが意味を成していることを確認する必要があります。

于 2013-02-22T02:38:12.740 に答える
0

これ以上の詳細がなくても、私が考えることができる唯一の提案は、1 つのことだけを行う適切に構造化された関数の背後にあるさまざまなステップをグループ化することです。

あなたの6つのステップは、init関数が持つべき6つの機能の良いスタートになるようです。#2が同期的だった場合(私はそれを疑っています)、#2、#3をgetSettings関数にマージします。

于 2013-02-22T02:29:17.080 に答える