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

C# Discussion :

[optimisation] instancier une collection pour rien


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut [optimisation] instancier une collection pour rien
    Voici une fonction de 3 lignes.

    Il y a une faiblesse, car dans les cas ou GetCollectionA & GetCollectionB retourne une collection vide, on a instancier ResultCol pour rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private static HashSet<MaClasse> FunctionAlpha(ClasseXXX _CallerObject)
    {
        HashSet<MaClasse> ResultCol = new HashSet<MaClasse>();
        ResultCol.UnionWith(_CallerObject.GetCollectionA());
        ResultCol.UnionWith(_CallerObject.GetCollectionB());
     
        return ResultCol;
    }
    Comment ameliorer ?

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Bah je ne vois pas où est le problème ? Il faut bien instancier l'objet avant de le renvoyer, non ?
    Sinon il faudrait renvoyer null si les deux collections sont vides.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Bah je ne vois pas où est le problème ? Il faut bien instancier l'objet avant de le renvoyer, non ?
    Sinon il faudrait renvoyer null si les deux collections sont vides.
    Je suis d'accord D'autant plus que lorsqu'une fonction prétend renvoyer une collection, que signifierait le retour de null ? Il me paraît plus sain de renvoyer une collection vide, parce que sinon l'utilisateur de la fonction doit passer son temps à vérifier que le retour de la fn pour éviter les NullReferenceException.

    Donc : instancie

  4. #4
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    justement ca ne me derangerais pas forecement ce null en retour...

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Citation Envoyé par ZaaN Voir le message
    justement ca ne me derangerais pas forecement ce null en retour...
    -1 !

    Ta fonction est censée retourner une collection, donc une collection vide a nettement plus de sens qu'un null !

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Il faudrait en savoir un peu plus sur la finalité et l'utilisation de ton code afin de savoir s'il s'agit vraiment d'une faiblesse et pouvoir te proposer des stratégies si c'est véritablement un problème potentiel...

  7. #7
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Par défaut
    tu testes s'il y a des élements dans tes collections.
    le problème est de savoir comment tu gères le return. si tu retournes null ou une collection vide qu'est ce qui se passe dans le reste de ton code.

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

Discussions similaires

  1. Optimisation d'une requête pour l'utiliser dans trigger
    Par Skandyx dans le forum Développement
    Réponses: 1
    Dernier message: 29/11/2012, 09h12
  2. Optimisation d'une boucle pour l'insertion de lignes
    Par tiplof dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/09/2012, 20h42
  3. [Oracle] Instancier une classe pour chaque résultat avec OCI_
    Par H.ile dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/01/2012, 13h52
  4. Réponses: 2
    Dernier message: 26/09/2008, 22h32
  5. couleur de police d'une cellule dans une collection pour combobox
    Par fabrice44 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/05/2008, 15h08

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