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

Langage Java Discussion :

Les bonnes pratiques pour des méthodes compliquées d'acitonListeners


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Iori Yagami
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 107
    Par défaut Les bonnes pratiques pour des méthodes compliquées d'acitonListeners
    Bonsoir,

    Je developpe un jeu de carte en ligne, où les actions sont un peu divers. Je suis donc dans l'obligation de leurs associer chacun un type d'évenement souris (drag&drop, double clique, clique droit)
    Mon application est bien organisée, j'essai de respecter le module MVC le plus possible. Donc les différents événements je les gère dans une classe Control. (classe imposée par l'API que j'utilise).
    Le problème est que la gestion des différents événements est trop compliquée. la méthode mouseReleased me prend environ 300 ligne de code.

    Je voulais savoir s'il y a de bonnes pratiques permettant d'améliorer mon code, ou des design patterns particuliers à ce genre de problèmes.

    Merci.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pour les listeners, comme tu peux en mettre plusieurs par objet graphique, pourquoi ne pas séparer en plusieurs listener plutot que d'avoir un gros listener qui essaie de gérer toutes les conditions?

  3. #3
    Membre confirmé Avatar de Iori Yagami
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 107
    Par défaut
    La partie graphique est un composant ou il y a plusieurs dedans c'est vrai, mais les événements surviennent sur la totalité du composant.
    C'est à dire, j'ai un composant de type HandView par exemple (où il y a des carte de jeu), et un autre de type ThrownView, les deux font partie du composant majeur contrôlé par la classe Control.

    Si je fait un double clique sur une des cartes, la carte devrai se retrouver dans le composant ThrownView, bien évidemment après avoir rempli quelques conditions nécessaires :s

    Si je drag une carte, je peux changer l'ordre des cartes dans le composant HandView.

    Si je fait un clique droit, c'est toute une autre opération qui a ses conditions et ses conséquences.

    le problème est que toutes ses opérations doivent être faites dans la méthode mouseReleased. (la méthode actionPerformed ne marche qu'avec des boutons je crois et déjà elle quoi à faire).

    J'ai essayé de rendre le code plus lisible en créant des méthodes privés qui chacune regroupe un ensemble d'instruction.
    Mais je me sens encore dans le chaos, déjà j'ai un blocage (sans aucune exception générée), mais je peux pas en déterminer la cause. Parce que c'est compliqué à suivre.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pourquoi ne pas créer une classe séparé par action possible?

  5. #5
    Membre confirmé Avatar de Iori Yagami
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 107
    Par défaut
    Oui, j'aime bien cette idée, mais je vois pas comment?

    Je veux dire, les paramètres de cette classe? ou encore les classes dont elle peut hériter..

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ben c'est un actionlistener, il a pas besoin d'hérite de quoi que ce soit, il implémente acitonlistener et c'est tout. Qaudn au paramètre, tu dois lui passer dans le constructeur ou autre, tout ce dont il aura besoin pour faire son travail.

Discussions similaires

  1. Les Bonnes pratiques pour Outlook 2007
    Par gnaoui_9999 dans le forum Outlook
    Réponses: 1
    Dernier message: 12/07/2010, 18h40
  2. Réponses: 33
    Dernier message: 18/04/2009, 12h36
  3. Réponses: 7
    Dernier message: 23/03/2009, 22h38
  4. Réponses: 4
    Dernier message: 01/10/2008, 08h59

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