35 votes

Architecture d'application Android - MVVM ou MVC?

J'ai un projet android, je commence à travailler sur, et je veux que sa structure pour être aussi robuste que possible.

Je suis venue à partir d'un WPF MVVM fond et j'ai été lire un peu sur les applications android de l'architecture, mais je n'arrivais pas à trouver un droit de réponse claire sur l'architecture de qui je devrais utiliser.

Certaines personnes ont suggéré d'utiliser MVVM - http://vladnevzorov.com/2011/04/30/android-application-architecture-part-ii-architectural-styles-and-patterns/

et d'autres ont suggéré d'utiliser MVC, mais ne spécifie pas exactement comment il devrait être mis en œuvre.

Comme je l'ai dit, je viens de WPF MVVM arrière-plan, et donc je sais qu'il s'appuie fortement sur les liaisons qui comme je le comprends, ne sont pas pris en charge par défaut dans Android.

Il semble qu'il y est une 3ème partie de la solution http://code.google.com/p/android-binding/ Mais je ne sais pas si j'aimerais compter sur cela. Que faire si son développement à s'arrêter et il ne sera pas pris en charge par les futurs Api et etc..

Fondamentalement, ce que je suis à la recherche d'une minutieuse tutoriel qui va m'apprendre les meilleures pratiques pour la construction de l'application de la structure. Les dossiers et les classes de la structure et etc. Je ne pouvais pas trouver n'importe quel approfondie tutoriel, et je me serais attendu que Google serait de fournir un tutoriel pour ses développeurs. Je ne pense pas que ce genre de documentation gère l'aspect technique assez bon - http://developer.android.com/guide/topics/fundamentals.html

J'espère que j'ai été assez clair et que je ne suis pas trop demander, je veux juste être sûr de mon application de la structure, avant que mon code va se transformer en un spaghetti monster.

Merci!

35voto

Pedro Loureiro Points 6889

Tout d'abord, Android ne vous force pas à utiliser n'importe quelle architecture. Non seulement cela, mais il fait aussi un peu de mal à essayer de suivre à tout. Cela va vous obliger à être un smart développeur afin d'éviter de créer une base de code spaghetti :)

Vous pouvez essayer de s'adapter à n'importe quel motif vous connaissez et que vous aimez. Je trouve que la meilleure approche consiste en quelque sorte entrer dans vos tripes que vous développez des applications de plus en plus (désolé à ce sujet mais comme toujours, vous aurez à faire beaucoup d'erreurs jusqu'à ce que vous commencer à le faire à droite).

Sur les modèles vous le savez, permettez-moi de faire quelque chose de mal: je mélange des trois modèles différents de sorte que vous obtenez le sentiment de qu'est-ce qui, dans android. Je crois que le Présentateur/ModelView doit être quelque part dans le Fragment ou d'une Activité. Les adaptateurs peuvent parfois faire ce travail comme ils prennent soin d'entrées dans les listes. Probablement les Activités doivent travailler comme des Contrôleurs de trop. Les modèles doivent être régulières, fichiers java alors que la Vue doit jeter dans la mise en page des ressources et des composants personnalisés, vous pourriez avoir à mettre en œuvre.


Je peux vous donner quelques conseils. C'est un wiki de la communauté de réponses donc j'espère que d'autres personnes pourraient inclure d'autres suggestions.

L'Organisation Des Fichiers

Je pense qu'il y a principalement deux sensée possibilités:

  • tout organiser par type - créer un dossier pour toutes les activités, un autre dossier pour toutes les cartes, un autre dossier pour tous les fragments, etc
  • tout organiser par domaine (peut-être pas le meilleur mot). Cela signifierait que tout ce qui concerne "ViewPost" serait à l'intérieur du même dossier - de l'activité, le fragment, les cartes, etc. Tout ce qui a trait à "ViewPost" serait dans un autre dossier. De même pour les "EditPost", etc. Je suppose que les activités de obligerait les dossiers que vous devez créer et alors il y aurait un peu plus de génériques pour les classes de base par exemple.

Personnellement, j'ai été impliqué dans des projets à l'aide de la première approche, mais je voudrais vraiment essayer le plus tard, comme je le crois, il pourrait faire des choses plus organisées. Je ne vois aucun avantage à avoir un dossier avec 30 fichiers non liés mais qu'est ce que j'obtiens avec la première approche.

De nommage

  • Lors de la création de mises en page et les styles, toujours de nom (ou de les identifier) à l'aide d'un préfixe pour l'activité (/fragment) où ils sont utilisés.

Donc, toutes les chaînes de caractères, les styles, les identifiants utilisés dans le cadre de "ViewPost" devrait commencer à être "@id/view_post_heading" (pour un textview par exemple), "@style/view_post_heading_style", "@string/view_post_greeting".

Cela permettra d'optimiser la saisie semi-automatique, d'organisation, d'éviter le nom de colision, etc.

Les Classes De Base

Je pense que vous aurez envie d'utiliser les classes de base pour à peu près tout ce que vous faites: Adaptateurs, des Activités, des Fragments, des Services, etc. Ces pourrait être utile au moins à des fins de débogage si vous connaissez les événements qui se sont produits dans votre activité.

Général

  • Je n'ai jamais anonymes classes - ces sont moches et sera le moteur de votre attention lorsque vous essayez de lire le code
  • Parfois, je préfère utiliser les classes internes (comparé à créer une classe dédiée) - si un cours n'est pas destiné à être utilisé n'importe où ailleurs (et c'est petit) je pense que c'est très pratique.
  • Pensez à votre système d'enregistrement depuis le début, vous pouvez utiliser la version d'android de journalisation du système, mais faire un bon usage!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X