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 :

Conseil pour implementer différentes classes


Sujet :

C++

  1. #1
    Membre actif Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Points : 221
    Points
    221
    Par défaut Conseil pour implementer différentes classes
    Bonjour

    Je recherche des conseils pour refactoriser mon code C++.

    J'ai réalisé plusieurs classes de type DefautFoo de la forme suivante
    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
     
     
    #ifndef DEFAULT1_H
    #define DEFAULT1_H
    [...]
     
    class default1
    {
    public:
        DLLEXP void initialize(const char* filepath);
        DLLEXP void learn(object info, std::vector<object>& other, std::vector<object>& target,  int& ret );
        DLLEXP void recall( std::string Filename,   std::vector<std::string>& oldValue,   std::vector<std::string>& newValue);
        DLLEXP void getDefault( const cv::Mat& src,  std::string &res, unsigned int rstep, unsigned int dstep );
     
    private   
        std::string defaultType = "default1";
    };
     
    #endif //DEFAULT1_H
    Sur les classes défauts, j'ai des différences :
    • le prototypes des fonctions est différents pour certain type de défaut
    • la valeur de defaultType est différentes
    • la fonction getDefaut peut avoir une implémentation différente avec le prototype de la fonction identique.


    Je cherche à optimiser le code en POO, quelle peut être la meilleure stratégie ?
    Merci de vos avis.
    "Nulla Tenaci Invia Est Via"
    Aux persévérants aucune route n'est interdite

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Pour se lancer dans du refactoring, il faut identifier certains défauts (sans mauvais jeu de mots ) de ton code que tu souhaites corriger. Quelles limites rencontres-tu aujourd'hui ? Que souhaiterais-tu améliorer ?

    De plus, ça serait bien de nous expliquer un peu le but de ton groupe de classe. Quand tu parles de "défaut", tu veux des "erreurs" sur un appareil, comme un défaut d'allumage dans une chaudière ou un défaut de pression dans une pompe ? Un code sert à résoudre un problème. Sans la compréhension du problème, il n'est pas possible de fournir un bon code à mon avis.

  3. #3
    Membre actif Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Points : 221
    Points
    221
    Par défaut
    Le but est de trouver des défauts sur une pièces mécanique. Actuellement, il y a 9 défauts d'ou la réalisation de 9classes de traitements. Cependant il y a 5 classes qui ont le même code à des changements de valeurs prêts ou de prototype prêts.
    La première chose est pour moi d'améliorer la maintenabilité du code.
    Je pense partir sur le design pattern de la factory avec une classe abstraite de défaut.
    "Nulla Tenaci Invia Est Via"
    Aux persévérants aucune route n'est interdite

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Pour factoriser du code (OOP ou non) il faut repérer ce qui est commun.

    Que veux-tu faire avec n'importe quel défaut?

    La subtilité de la question, c'est que pour chaque traitement à effectuer, chaque défaut peut le faire à sa sauce, mais c'est un détail, du moment qu'il le fait.

    Par exemple, considère des formes géométrique, comme des cercles, des carrés, des triangles, etc.
    On peut décider que chaque forme doit pouvoir être dessinée dans une surface donnée.

    Il y a plusieurs stratégies de code:
    • OOP: classe de base et fonction virtuelle, mais l'affichage est-il la seule responsabilité de la forme (SRP)
    • design pattern visiteur
    • double dispatch (template?)
    • d'autres choses plus exotiques
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. Conseil pour que ma classe devienne serializable
    Par BasicZX81 dans le forum VB.NET
    Réponses: 4
    Dernier message: 06/09/2012, 22h29
  2. Conseil pour créer une classe de sauvegarde de configuration
    Par hdgetnet dans le forum Général Python
    Réponses: 5
    Dernier message: 28/11/2010, 08h34
  3. Débutant : Conseil pour diagramme de classe
    Par Looney dans le forum Débuter
    Réponses: 0
    Dernier message: 11/10/2009, 23h28
  4. Conseil pour implementation d'un graphe
    Par lusiole dans le forum C
    Réponses: 6
    Dernier message: 08/08/2007, 19h35
  5. [RMI] Probleme pour retrouver la classe implementée.
    Par Koko22 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 16/09/2004, 19h15

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