2016-11-18 4 views
4

私は正直なところ、Androidに関するこのMVPや類似のものの周りに頭を浮かべることはできません。その本当のポイントは何ですか?Android MVP:テストを有効にするのは単なる言い訳ですか?

これまで、AndroidでMVPを使用する唯一の実用的な理由は、フレームワーククラス(アクティビティ、サービス、フラグメントなど)からユニットテスト可能なコードを抽出することでした。不可能)をテストする。

アクティビティ(および他のフレームワーククラス)は可能な場合(つまり、フレームワークにとらわれないコードを処理する場合)、プレゼンターに仕事を委任させ、そうでない場合は直接作業を行います。このため、プレゼンターは、アクティビティのライフサイクルを反映するメソッド(onStart、onResume、clickListeners ...)を持つことによって、何とか気が進まないように見えます。これがコードのにおいであるのだろうか?

これに加えて、MVP Androidアプリを構築するためのライブラリやパターンがたくさんありますが、実際には自分のプレゼンターを手動で作成して管理することの欠点は何ですか? アクティビティとプレゼンターのデカップリングは、プレゼンターがアクティビティからのコードを単に抽出するだけであるため、定義によって密接に結合されています。プレゼンタにはプレゼンテーションロジックのみが含まれています(ビジネスロジックの残りの部分は、View/Presenterのデュオについて何も知らない専用クラスに入ります)。

私はこのトピックで少し失われていると感じています。私は、より大きな視点を得るために、この問題についていくつかの意見をしたいと思います。

+2

に直面していない場合は、MVPを進める必要がありますテスト - それは読みやすく、維持し、再利用することも容易です。したがって、テストは良いコードを書くことから得られる特別なメリットです。 –

+0

テストは、MVPパターンのもう一つの美徳です。分離されたPresenterを使用すると、アプリケーションが他の世界とどのようにやりとりしているか(どのような記憶装置であれ、どんな通信であろうと)、アプリケーションがユーザーとやりとりすること間の相互作用をはっきりと切り離すことができます(アクティビティの表示、単にビープ音)。 –

+0

Presenterでのアクティビティライフサイクルメソッドの複製は、パターンを使用する最良の方法ではない可能性があります.Presenterは、必ずしもAndroidアクティビティではなく、どのビューでも操作できるはずです。 Viewがコンソールであることを想像してみてください。それはPresenter上で 'onStart()'を呼び出すのに意味がありますか? – Egor

答えて

0

はい、確かに、プレゼンテーションロジックのフレームワークには関係なくテストすることができますが、プレゼンターを変更することで、実行時の動作を変更することもできます。表示インターフェースには、もっと抽象的な方法が必要です(「非表示ボタンX」ではなく、データのセットを表示するなど)。 UIロジックをフレームワーク依存の実装から分離することで、UIの変更に異なるビューを使用したり、実行時にロジックを変更するPresenterを使用することができます。表示 - プレゼンターは 'シム'であり、「スパゲッティ」コードを書くのが難しくなります

-1

長期的な視点からすれば、あなたのコードは実行可能で維持しやすいはずです。誰もリファクタリングコードに余分な時間を費やしたくありません。私たちがプロジェクトを始めるときには、適切なパターンについて行うべきことがあります。

MVPについて話すと、簡単にテストできるプレゼンターレイヤーが用意されています。ビュー参照がないため、junitテストケースを簡単に実行できるため、他のUIテストケースを使用する必要があります。それがこれだけのビジネスロジック

が含まれているよう

あなたは、どこでもあなたが望む私の提案を同じプレゼンターを再利用することができます何かがしやすい場合がたいが、将来のコードの問題

+0

アンドロイドアプリのコンテキストでは、2つの異なるアクティビティで同じプレゼンターを使用するメリットは実際には分かりません。 発表者はプレゼンテーションに厳密に関連するフレームワークにとらわれないコードを含めるべきです(入力イベントの処理、出力イベントへの対応など)。他のすべての種類の再利用可能なコード(ビジネスモデル、ネットワークレイヤ、データベースなど)発表者には実装されていますが、プレゼンターが使用する必要があります。 –

+1

'私たちがプロジェクトを始めるときには、適切なパターンについて行うべきことがあります.-パターンを選ぶのではなく、良いアプリケーションを作り、ソリッドな原則に従う方法を考えるべきです。 –

+0

あなたはデザインパターンに専念する必要はないということです。真剣に? –

関連する問題