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 :

Plusieurs méthodes avec tronc commun => 1 seule méthode ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut Plusieurs méthodes avec tronc commun => 1 seule méthode ?
    Salut,

    Je travaille sur un exercice portant sur la gestion d'un catalogue de livres. On demande notamment d'écrire une méthode pour rechercher un livre stocké dans une table.

    Je me suis rendu compte que la recherche possède un tronc commun qui compare tout simplement une chaîne au titre ou au code isbn.

    On pourrais créer une méthode commune comme ci-dessous mais quelque chose me dis que cette solution n'est pas vraiment élégante.

    Auriez-vous une alternative à proposer ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    public Livre rechercherLivre( String chaineRecherche, String typeRecherche )
    	{
    		String chaineComparaison = "";
    		Livre instanceLivre = null;
     
    		if( typeRecherche == null )
    			return null;
     
    		if( chaineRecherche == "" )
    			return null;
     
    		for( int i = 0; i < tailleTableau; i++ )
    		{
    			if( typeRecherche == "Titre" )
    				chaineComparaison = tableauLivres[ i ].getTitre();
    			else if( typeRecherche == "ISBN" )
    				chaineComparaison = tableauLivres[ i ].getIsbn();
     
    			if( chaineComparaison == chaineRecherche )
    				instanceLivre = tableauLivres[ i ];
     
    			return instanceLivre;
    		}
     
    		return null;
    	}

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 887
    Par défaut
    Salut,

    Ce qui serait plus élégant et rapide, serait que tu crées deux HashMap, avec pour clé d'une part la clé ISBN pour l'une, et le titre pour l'autre.

    Ainsi, tu accéderais directement au livre sans constamment parser ton tableau, ce qui peut être assez lent.

    Est-ce que l'exercice se limite à l'usage d'un tableau ?

    Sinon pour répondre plus particulièrement à la question, il est bien entendu de bonne pratique de séparer les différents types de recherche en plusieurs méthodes voire plusieurs classes.

    Je te conseille pour améliorer la qualité de ton code, de séparer les processus métier ( ici recherche par titre ou clé ISBN ) et d'utiliser des constantes plutôt que de directement avoir des chaines de caractères dans ton code.

    A+

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut
    Citation Envoyé par KiLVaiDeN Voir le message
    Salut,

    Ce qui serait plus élégant et rapide, serait que tu crées deux HashMap, avec pour clé d'une part la clé ISBN pour l'une, et le titre pour l'autre.

    Ainsi, tu accéderais directement au livre sans constamment parser ton tableau, ce qui peut être assez lent.

    Est-ce que l'exercice se limite à l'usage d'un tableau ?
    Je serais tenté d'utiliser des HashMaps mais l'exercice demande bien un tableau.

    Sinon pour répondre plus particulièrement à la question, il est bien entendu de bonne pratique de séparer les différents types de recherche en plusieurs méthodes voire plusieurs classes.
    Donc, il vaudrais mieux viser une surcharge de méthode, même si le code est très similaire. Bon, je vais mettre ces vielles habitudes que j'ai pris avec le C de côté.

    Je te conseille pour améliorer la qualité de ton code, de séparer les processus métier ( ici recherche par titre ou clé ISBN ) et d'utiliser des constantes plutôt que de directement avoir des chaines de caractères dans ton code.
    C'est noté pour les constantes. Pourrais-tu donner plus d'explications sur la notion de processus métier ? Est-ce que tu entends par là qu'une méthode dois agir de manière "unitaire" et seulement chercher une information précise au lieu de jouer le role d'un couteau suisse ? Je dois avouer que c'est un peu flou dans mon esprit.

  4. #4
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 887
    Par défaut
    Plus tu sépares tes traitements, plus facile seront les évolutions et la maintenance.

    Par exemple, ta méthode "couteau-suisse" pourrait vite devenir une usine à gaz si on te demande d'ajouter d'autres paramètres de recherche, ou bien si pour une raison X ou Y des processus qui te parraissaient similaires au départ, deviennent subtilement distincts.

    Par exemple, on peut te dire que la recherche par titre doit pouvoir te retourner une collection de Livre si tu ne donnes qu'une partie du titre, alors que la recherche par ISBN doit directement t'afficher le livre correspondant à ce code unique.

    A+

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut
    Merci pour tes explications. C'est beaucoup plus clair.

    a+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 19
    Dernier message: 30/07/2013, 16h43
  2. TFS, évolutions avec tronc commun
    Par lamorkytu dans le forum Visual Studio Team System
    Réponses: 0
    Dernier message: 20/08/2010, 10h03
  3. plusieurs tables avec un seul DBnavigator et DBGRID
    Par warrior dans le forum Bases de données
    Réponses: 8
    Dernier message: 07/06/2005, 08h12
  4. Plusieurs commandes avec 1 seule R-commande
    Par pouldo dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 01/04/2005, 18h44
  5. [C#] Une seule méthode pour plusieurs composants
    Par niPrM dans le forum Windows Forms
    Réponses: 8
    Dernier message: 01/06/2004, 14h41

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