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 :

Principe d’inversion des dépendances


Sujet :

C++

  1. #1
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut Principe d’inversion des dépendances
    Bonjour à tous.
    Je me pose une petite question.
    Je vais sans doute recoder avec Qt un petit logiciel qui permet de changer le fond d'écran automatiquement.
    Faut t'il que j'utilise Qt pour me fournir les classes de vecteurs,strings ... ou faut il que j'utilise ceux de la STL ?

    En effet, utiliser ceux de Qt m'apporte des avantages non négligable mais cela revient a violer le DIP.

    Utiliser ceux de la STL me permet d'avoir un code compilable même si je change de lib pour ma GUI et je ne viole pas le DIP mais je me bouffe des classes moyennement concus.

    Alors, votre avis ?

    Merci.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    ceux de la STL /**/ classes moyennement concus.
    Juste pour participer , pourquoi tu dis ca, a mon avis(pas expert) elles sont bien celle de la STL. Et en plus comme tu dis c'est plus portable. Celles de Qt ont plus de fonctions?

    Et sinon c'est quoi un DIP?

  3. #3
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 287
    Par défaut
    Le COW peut avoir un prix sous certaines circonstances, ou présenter un avantage en l'absence de sémantique de déplacement selon les écritures.

    Perso je préfère avoir mes noyaux indépendants de tout framework. Si maintenant tu sais que tu pars sur du Qt à tout jamais et que tanpis pour les vecteurs du C++0x ... pourquoi pas.
    Un truc qui se fait, c'est de ne jamais écrire en dur que les types de tes classes sont des std::vector<> ou autre. Passe par des typedefs à la place. Ceci dit, cela ne sera valable que si les interfaces de manipulations sont identiques.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Citation Envoyé par kacedda Voir le message
    Juste pour participer , pourquoi tu dis ca, a mon avis(pas expert) elles sont bien celle de la STL. Et en plus comme tu dis c'est plus portable. Celles de Qt ont plus de fonctions?

    Et sinon c'est quoi un DIP?
    Disons que certaines classe de la STL gene std::string sont un peu (beaucoup) des classe foure-tout assez mal foutu (AMHA).
    Et puis quand tu compare avec celle de Qt (http://qt.developpez.com/doc/4.3/qstring-members/) ya pas photo

    Sinon : Principe d’inversion des dépendances <=> Dependency Inversion Principle (DIP)

    Citation Envoyé par Luc Hermitte Voir le message
    Le COW peut avoir un prix sous certaines circonstances, ou présenter un avantage en l'absence de sémantique de déplacement selon les écritures.
    COW ?

    Citation Envoyé par Luc Hermitte Voir le message
    Perso je préfère avoir mes noyaux indépendants de tout framework. Si maintenant tu sais que tu pars sur du Qt à tout jamais et que tanpis pour les vecteurs du C++0x ... pourquoi pas.
    Disons que quand je code des truc qui sont capable de me reservir,moi aussi.
    Mais là,cette application aur un rôle bien précis et je ne me vois pas réutiliser son code plus tard.

    Et puis une application n'est jamais figé.La première version de celle ci était avec wxWidgets. La V2 sera avec Qt.La V3 sera peut être avec C++Ox .
    Alors dire que je part dans Qt pour tout jamais c'est s'aventurer beaucoup trop loin.


    Citation Envoyé par Luc Hermitte Voir le message
    Un truc qui se fait, c'est de ne jamais écrire en dur que les types de tes classes sont des std::vector<> ou autre. Passe par des typedefs à la place. Ceci dit, cela ne sera valable que si les interfaces de manipulations sont identiques.
    ><
    Je faisait malheursement le contraire quand j'ai codé cette appli.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  5. #5
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 287
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    COW ?
    Copy On Write. On en a déjà parlé ici (en rapport avec Qt en particulier). Et tu trouveras des choses à ce sujet sur GOTW (Guru Of The Week -> www.gotw.ca/gotw/)


    Citation Envoyé par Davidbrcz Voir le message
    Je faisait malheursement le contraire quand j'ai codé cette appli.
    Cela devrait te permettre de switcher rapidement entre le vecteur standard et celui de Qt (tant que tu n'utilises pas les spécificités d'itération de Qt)[1], mais peut-être pas pour les chaînes si justement tu recherches une dont l'interface est mieux foutue.

    [1] quoique je j'ai un doute, car j'ai l'impression (je peux me tromper) que le COW pousse au passage par copie, plutôt que par référence constante.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  6. #6
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Copy On Write. On en a déjà parlé ici (en rapport avec Qt en particulier). Et tu trouveras des choses à ce sujet sur GOTW (Guru Of The Week -> www.gotw.ca/gotw/)
    Merci.

    Cela devrait te permettre de switcher rapidement entre le vecteur standard et celui de Qt (tant que tu n'utilises pas les spécificités d'itération de Qt)[1], mais peut-être pas pour les chaînes si justement tu recherches une dont l'interface est mieux foutue.

    [1] quoique je j'ai un doute, car j'ai l'impression (je peux me tromper) que le COW pousse au passage par copie, plutôt que par référence constante.
    Je suis sans doute mal expliqué.Dans la V1 de l'application, il n'y aucun typedef,que des conteneur/string ébasé sur wxWidgets et écrit en dûr dans mon code.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  7. #7
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    Disons que certaines classe de la STL gene std::string sont un peu (beaucoup) des classe foure-tout assez mal foutu (AMHA).
    Et puis quand tu compare avec celle de Qt (http://qt.developpez.com/doc/4.3/qstring-members/) ya pas photo
    Euh, tu veux montrer un fourre-tout encore plus gros, c'est ça

    De mémoire, les seules fonctionnalités de QString que n'avait pas std::[w]string + boost sont :
    - Des conversions dans tel ou tel encodage pour l'I18N (mais il y a moyen de se faire ce genre de choses avec d'autres libs)
    - Une gestion multibyte (les QString sont en UTF16).
    - Le COW (est-ce bien ou pas...)
    - Une spécification claire de ce qui se passe en multithread.

    Citation Envoyé par Luc Hermitte Voir le message
    Cela devrait te permettre de switcher rapidement entre le vecteur standard et celui de Qt (tant que tu n'utilises pas les spécificités d'itération de Qt)[1], mais peut-être pas pour les chaînes si justement tu recherches une dont l'interface est mieux foutue.
    Quel est l'intérêt d'utiliser les conteneurs de Qt, si c'est pour utiliser l'interface à la mode STL uniquement ? (ps : J'ai déjà du mal à voir leur intérêt en utilisant l'interface spécifique...)


    Citation Envoyé par Luc Hermitte Voir le message
    [1] quoique je j'ai un doute, car j'ai l'impression (je peux me tromper) que le COW pousse au passage par copie, plutôt que par référence constante.
    Quand je développais avec Qt, je faisais quand même un minimum attention au passage par référence constante, mais je suis peut-être une exception. Et puis il faut avouer que tous mes aspect métier restaient en C++ pur, et donc que ce genre de choses arrivait assez rarement.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  8. #8
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Hors sujet : Loïc je ne t'ai jamais vu aussi objectif, dis-moi

    Davidbrcz > pour une telle application, cela n'est peut-être pas la peine de te prendre autant la tête.

    Tu ne vas quand même pas minimiser les appels à Qt pour une appli qui change ton fond d'écran.

    Par contre, pour des applis de production, il serait intéressant de comparer ces 2 types de code :
    - C++ + Boost ( + ASL ( + Loki ?) etc.)
    - C++ + Qt ( + autres bibliothèques liées à Qt )

    Généralement, développant des applications graphiques juste pour un usage personnel (ou pour un proche/ami, quoi), je préfère m'immerger dans le framework Qt et tenter de l'utiliser au mieux.

    Ceux qui ont déjà utilisé Qt dans leur boîte, vous avez des commentaires ?

Discussions similaires

  1. Make: génération des dépendances avec gcc
    Par Syrmonsieur dans le forum Systèmes de compilation
    Réponses: 1
    Dernier message: 08/06/2006, 15h22
  2. gestion des dépendances
    Par zola dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/05/2006, 13h34
  3. Recherche des dépendances
    Par dauphin34000 dans le forum Oracle
    Réponses: 6
    Dernier message: 25/04/2006, 13h32
  4. conception : table des dépendances
    Par gregolak dans le forum Langage SQL
    Réponses: 12
    Dernier message: 09/10/2005, 16h10
  5. Recherche des dépendances des modules
    Par slowpoke dans le forum Mandriva / Mageia
    Réponses: 9
    Dernier message: 11/12/2003, 08h49

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