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

Design Patterns Discussion :

Une classe DirectoryComparer [Cohésion]


Sujet :

Design Patterns

  1. #1
    En attente de confirmation mail
    Inscrit en
    Janvier 2007
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 70
    Points : 60
    Points
    60
    Par défaut Une classe DirectoryComparer
    Bonjour à tous,

    Ces dernières semaines j'ai beaucoup lu sur les design patterns et ça m'amène à revoir mon code existant.

    J'ai écrit récemment un programme pas très gros et une des vocations de ce programme est de comparer un répertoire contre un autre et retourner les fichiers en surplus de ce dernier.

    Comme ce n'est pas beaucoup de code, j'ai écrit le code qui retourne la liste des fichiers en surplus dans mon "user control" lui-même (je développe en C# / .NET).

    Comme le souligne le Single Responsibility Principle, une classe ne doit avoir qu'une et une seule responsabilité. Je viole donc ce principe puisque la responsabilité de mon "user control" est d'afficher les données. Corrigez-moi si je me trompe ici.

    Avant de lire sur les design patterns, j'avais une sérieuse tendance à créer des helper classes, dans laquelle j'ajoute des méthodes de toutes sortes qui sont utiles pour un module en particulier. Je me suis aperçu qu'il est difficile de maintenir un tel code puisqu'à chaque modification d'un élément d'un autre module, je dois changer des trucs dans ces méthodes.

    Pour revenir à mon comparateur de répertoires, je crois qu'il serait bien de créer une classe qui soit dédiée à ça (et ainsi respecter le Single Responsibility Principle) mais je ne suis pas certain si avoir une classe DirectoryComparer contenant qu'une seule méthode GetFiles() est logique ? Ça fait une classe assez minimaliste. Est-ce correct ?

    J'aimerais savoir si c'est ok de procéder ainsi, ou existe-t-il une meilleure façon de le voir ?

    Merci d'avance pour vos suggestions.

  2. #2
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Pourquoi pas une classe MyDirectory héritant de la classe du framework représentatn un repertoire, et qui ajouterait une méthode de comparasion (en prenant un autre Directory en paramètre ) ?
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  3. #3
    En attente de confirmation mail
    Inscrit en
    Janvier 2007
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 70
    Points : 60
    Points
    60
    Par défaut
    C'est une bonne idée, DirectoryInfo contient une méthode GetFiles(), je pourrais tout simplement hériter de DirectoryInfo et lui ajouter une méthode GetMissingFiles(string targetDirectory) ? Le problème c'est que je ne peux pas hériter de DirectoryInfo.

  4. #4
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Si tu ne peux pas en hériter, tu peux faire une composition. MyDirectory contient (en private) un DirectoryInfo, et délègue une partie du traitement GetMissingFiles à GetFiles de son DirectoryInfo.
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  5. #5
    En attente de confirmation mail
    Inscrit en
    Janvier 2007
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 70
    Points : 60
    Points
    60
    Par défaut
    Bonne idée. Merci !

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

Discussions similaires

  1. destruction d'une classe qui herite de CDialog
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 03/02/2004, 18h39
  2. Réponses: 14
    Dernier message: 15/01/2004, 02h15
  3. Conception d'une classe parente
    Par VincentB dans le forum Langage
    Réponses: 9
    Dernier message: 24/06/2003, 18h28
  4. Variable d'une Classe Ancêtre
    Par Génie dans le forum Langage
    Réponses: 3
    Dernier message: 18/09/2002, 20h24
  5. Sortir un typedef d'une classe
    Par Theophil dans le forum C++Builder
    Réponses: 13
    Dernier message: 03/07/2002, 18h21

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