Organisation du code d'un projet
Astram
Membre
Bonjour à tous,
jusque là je n'ai programmer que pour moi-même, donc juste fait des petits programmes "tests" sur iOS.
Je voudrai maintenant passer à la programmation d'une application iPhone permettant la gestion d'un compte utilisateur, avec accès à l'application seulement après avoir passé un formulaire de login.
Je voulais savoir comment organiser un projet comme celui là .
Dois-je organisation sous forme de librairie statique (une classe utilisateur par exemple avec les méthodes et attributs relatifs à un utilisateur et appelé depuis les viewcontrollers?
Ou alors utiliser directement les .m .h .xib directement représentant chacun un écran avec les données qui s'y rapportent?
Je ne sais pas si j'ai été très clair...en gros, y a-t-il des principes recommandé d'organisation du code ?
J'espère que vous pourrez m'éclairer.
Merci
jusque là je n'ai programmer que pour moi-même, donc juste fait des petits programmes "tests" sur iOS.
Je voudrai maintenant passer à la programmation d'une application iPhone permettant la gestion d'un compte utilisateur, avec accès à l'application seulement après avoir passé un formulaire de login.
Je voulais savoir comment organiser un projet comme celui là .
Dois-je organisation sous forme de librairie statique (une classe utilisateur par exemple avec les méthodes et attributs relatifs à un utilisateur et appelé depuis les viewcontrollers?
Ou alors utiliser directement les .m .h .xib directement représentant chacun un écran avec les données qui s'y rapportent?
Je ne sais pas si j'ai été très clair...en gros, y a-t-il des principes recommandé d'organisation du code ?
J'espère que vous pourrez m'éclairer.
Merci
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
En revanche, si il y a plusieurs interaction utilsateur, dans différentes vues, à ce moment là , mieux vaut une class dont tu appelleras les méthodes depuis tes contrôleurs, ça évite de répéter du code.
Prends le cas d'un dialogue avec un webservice par exemple, tu risques de faire plusieurs fois les mêmes choses (ouverture de session, récupération d'informations, post, etc) là , clairement, fais toi une class.
c'est justement ce que j'ai besoin de faire, j'aurai 4 onglet dans un tabbar. Dans chaque onglet, j'aurai besoin de récupérer des infos via webservice. Existe-t-il des exemples de class comme celle que tu m'a proposé de faire?
En gros tu fais une class, tu l'a fais hériter de NSObject.
Tu places tes méthodes accessible avec un +(void) ou +(ce que tu veux) et les méthodes internes classiquement avec un - et roule.
O_O
Une librairie statique ?
Le seul intérêt d'une librairie statique (ou dynamique si on ne se limite pas à iOS), c'est de faciliter la réutilisation du même code au sein de plusieurs applications sans avoir à recompiler tout à chaque fois.
Ou alors pour les très grosses applications, regrouper effectivement le code par fonctionnalité. J'aurais tendance, en ce qui me concerne, à faire une librairie par "package" UML (quoi, vous ne faites pas de modélisation UML pour vos applications ? /xd-laugh.gif' class='bbc_emoticon' alt='xd' /> ).
Sinon, clairement, pour une application avec 4 pauvres controlleurs qui se battent en duel, une librairie n'a aucun intérêt (à part, encore une fois, si tu comptes réutiliser les controlleurs dans plusieurs applications, et encore...).
Tu instancierais une classe dans chacun de ses controlleurs ?
Je vous laisse le faire les gars !
Par exemple, sur Cocoa Touch, UIDevice est un singleton, et c'est logique, on ne tourne que sur un seul terminal.
Pour une base de données par exemple, ce n'est pas malin: on peut tout à fait imaginer ouvrir plusieurs bases au sein d'une même appli. N'est-il pas plus intelligent d'instancier l'objet BdD dans l'App Delegate, et le passer aux contrôleurs qui en ont besoin ?
Après pour passer un objet d'un controlleur à l'autre oui mais tu ne crées par une forte dépendance ?
C'était un exemple. Mais là , on pourrait passer un objet Session.
Au contraire, les dépendances sont clairement identifiées et n'apparaissent que là ou c'est nécessaire. Par exemple, si la session n'est nécessaire que dans l'onglet Option, alors OptionViewController aura une propriété Session, et l'AppDelegate lui passera. Après, OptionViewController en fait ce qu'il veut. Peut-être qu'il ne l'utilise pas directement, et que c'est un sous-contrôleur qui l'utilise. L'avantage est évident: l'AppDelegate n'a pas à connaitre la structure sous-jacente de OptionViewController. Celle-ci peut changer, tant que l'interface publique d'OptionViewController ne change pas, l'AppDelegate y fait toujours appel de la même façon. Les dépendances sont donc faibles.
L'inconvénient de cette méthode, c'est qu'on doit souvent surcharger les setters pour passer un objet d'un contrôleur à un autre!
Par contre pourquoi surcharger le setter ?