IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Question amélioration code


Sujet :

Android

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut Question amélioration code
    Bonjour,

    Je m'explique, j'ai eu des remarque sur un travail (mon application android) en ce qui concerne la redondance dans la déclaration des variables.

    On m'a conseillé de faire un tableau de variables, mais en faisant des recherches et demandant autour de moi on m'a conseillé de faire une interface (vu que mes class héritent déjà toute d'une superclass).

    Donc voilà en gros mon application se compose de 3 activités principales (qui slide entre elles).
    Chaque activité à exactement la même forme (à un détail près, certaine données changent en fonction de l'activité, mais ça c'est plus pr le web service).

    Donc en gros, chacune d'entre elles à exactement les même variables, même écouteur d'évènement, même bouton et même class et appel asynchrone (sauf variables url ou autre).

    Petit soucis, j'ai remarque que tout ce qui était dans mon "public View onCreateView" n'avait pas l'air de pouvoir être mis dans l'interface (exemple la liaison entre un adaptateur et son layout, par exemple pour les listes).

    Je sais plus trop quoi faire pour éviter la redondance, j'espère avoir été assé clair ^^

    Merci d'avance pour vos réponses

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Défini le tout dans une superclasse abstraite plutôt que dans une interface.
    Tout le code redondant doit être déporté dans cette classe-là, et ensuite, elle doit posséder des méthodes abstraites pour les implémentations changeant.

    Dans les interfaces, il n'est pas possible d'avoir des attributs, ni des implémentations de méthodes, donc difficile de diminuer une redondance de code à l'aide d'interface.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    Merci pour ta réponse,

    Le problème à cette technique là c'est que mes 3 class héritent de Fragment (ce qui permet par la suite de créer une slider) donc la solution "extends" n'est plus possible et c'est pour ça que j'ai visé les interfaces qui permettait d'ajouter un héritage si on veut

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Ben ... ta superclasse hérite de Fragment.
    Tes classes à toi héritent de la superclasse (donc de Fragment).

    Où est le souci ?
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    La superclass fragment est une classe existante à la base, je ne l'ai pas créé, et je n'ai encore jamais modifié de classe existante donc je sais même pas si c'est possible ^^

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Mais ... tu ne la modifie pas ôO

    Tu dis que tu as 3 classes héritant de Fragment et que celles-ci possèdent du code redondant.

    Je te suggère de faire un niveau intermédiaire, en créant une autre classe qui servira de superclasse pour les 3 classes héritant de Fragment et factorisant le code.

    En somme, passer du premier au second :
    Images attachées Images attachées   
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  7. #7
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Ca tient la route
    Si la réponse vous a aidé, pensez à cliquer sur +1

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    Ha ok donc tu me dis de créer une classe qui hérite de fragment et mes 3 classes (qui sont en réalité mes 3 vues à slider) héritent de cette superclasse?

  9. #9
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Oui.

    Ainsi, tu factorises ton code dans cette superclasse, et tu raffines selon le besoin dans les classes héritant de celle-ci (ce qui, potentiellement, peut t'en permettre d'en créer facilement une quatrième, cinquième, sixième ... qui serait dans le même cas que les autres).
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    ça me parait pas mal en effet, mais cela me permettra de supprimer la redondance dans les variables mais par contre pour ce qui est des écouteurs d'évènements sur les boutons ou sur mes listeView (pour les faire apparaître et disparaître), ainsi que les liaison des éléments à mes layout, c'est pas possible et je trouve pas grand chose là-dessus :s

  11. #11
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Pour les listener, si ce sont les mêmes, tu peux les externaliser dans une "vraie" classe, et ensuite l'appliquer.

    Pour les liaisons, là ... ils pourraient (conditionnel) être factorisé dans le onCreate (ou assimilé) de la superclasse, mais je ne donnerai pas ça comme certitude.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  12. #12
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Points : 67
    Points
    67
    Par défaut
    Le soucis c'est qu'à partir du moment où le listener n'est pas dans le onecreate, il affiche une erreur en disant qu'il ne peut pas se trouver là.
    J'ai l'impression que mon problème de redondance n'as pas de solution :s

Discussions similaires

  1. [E-07] amélioration code capture image feuille
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/03/2009, 22h09
  2. question amélioration d´une macro
    Par jager57 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/08/2008, 11h06
  3. question sur Code::blocks
    Par deubelte dans le forum Code::Blocks
    Réponses: 3
    Dernier message: 04/01/2007, 15h44
  4. À lire avant de poster vos questions sur Code::Blocks
    Par khayyam90 dans le forum Code::Blocks
    Réponses: 0
    Dernier message: 12/07/2006, 08h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo