Un "main" de 1400 lignes en C++... comment faire plus court?
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Un "main" de 1400 lignes en C++... comment faire plus court?



  1. #1
    invitea29b3af3

    Un "main" de 1400 lignes en C++... comment faire plus court?


    ------

    Bonjour

    J'ai besoin d'un conseil. J'ai écris un programme en C++ avec 4 classes (4 fichiers ".h", 4 fichiers correspondant ".cpp") et un main (2 fichiers: main.h et main.cpp) pour un projet.

    Et mon "problème" c'est que mon fichier main contient à peu près 25 à 30 fonctions (prototypées dans le main.h et explicitées dans le main.cpp). Du coup mon main.cpp fait.... 1400 lignes... hum. Et si je donne ce code à la personne qui va m'évaluer, ça risque de mal passer. Donc ma question est : comment est-ce qu'un programmeur un peu plus avancé que moi ferait ça plus "proprement" ? Est-ce qu'il faut créer un autre fichier avec juste des fonctions dedans ?... ou autre chose ?

    Merci d'avance pour vos conseils

    -----

  2. #2
    invite74a6a825

    Re : Un "main" de 1400 lignes en C++... comment faire plus court?

    Pour diminuer la taille d'un code c++ il faut créer des fonctions dés que plus de 3 lignes sont répété avec éventuellement des valeurs de variable différentes

    par exemple pour chercher dans une liste

    Code:
    CListe* CListe::GetById(int _id)
    {
        CListe *l=this;
        do
        {
    		if (l->GetIdent()==_id) return(l);
        } while ((l=l->next));
        return NULL;
    }
    au lieu de répéter cette boucle à chaque fois que l'on cherche un élément de la liste

  3. #3
    invitea29b3af3

    Re : Un "main" de 1400 lignes en C++... comment faire plus court?

    Merci pour la réponse.
    Mais en réalité, je ne veux pas forcément diminuer la longueur de mon code, qui est très compact (malgré les 1400 lignes, mais c'est un gros projet, fait sur 6 mois). Ce que je voudrais c'est plutôt savoir comment arranger les fichiers, autrement dit : comment est-ce qu'un bon programmeur arrangerait ce code ? est-ce qu'il laisserait ces 25 fonctions dans le fichier main.cpp ? Ou est-ce qu'il les mettrait ailleurs (un fichier fonctions.cpp, qui lui ferait alors 1400 lignes à son tour) histoire que le fichier main.cpp se résume à la fonction "main" et point barre? C'est juste une histoire de "présentation", de "propreté du code".

  4. #4
    Jack
    Modérateur

    Re : Un "main" de 1400 lignes en C++... comment faire plus court?

    il faut penser réutilisation. Tes 25 fonctions doivent pouvoir être regroupées par "affinité". Tu pourrais donc créer des "packages" regroupant les fonctions ayant une dépendance forte.
    En passant, tu parles beaucoup de fonctions alors que tu programmes en C++. Comment peux-tu te retrouver avec des tas de fonctions ne dépendant d'aucune classe?

    Si ces fonctions sont des méthodes de classe, alors le regroupement se fait d'office. Et tu peux éventuellement faire des packages de classes possédant là encore une forte dépendance.

    A+

  5. A voir en vidéo sur Futura
  6. #5
    invite895675d5

    Re : Un "main" de 1400 lignes en C++... comment faire plus court?

    Moi je crée les fichiers "utilitaires.h" et "utilitaires.cpp" (ou fonction_utilitaires...)
    En fait toutes les méthodes et fonctions qui ne vont pas ailleurs vont la dedans...
    Sinon si tu as plusieurs méthodes qui travaillent sur des string ou char* tu peux toutes les mettre ensemble dans un autre fichier ("traite_chaine.h" et "traite_chaine.cpp" par exemple), pareil si tu as plusieurs fonctions de tri ("tri.h" et "tri.cpp"), etc...
    En gros soit tu fais un fichier fourre-tout avec un nom "qui passe".
    Soit tu tries tes fonctions et méthodes selon ce qu'elles font où les types sur lesquels elles travaillent.
    Ca passait bien durant mes études...

  7. #6
    invitea29b3af3

    Re : Un "main" de 1400 lignes en C++... comment faire plus court?

    Merci à tous les deux.

    Citation Envoyé par Jack Voir le message
    Comment peux-tu te retrouver avec des tas de fonctions ne dépendant d'aucune classe?
    Mes classes représentent plutôt des objets, qui ont des méthodes propres, mais mes fonctions font plutôt de l'algorithmie (je fais du traitement d'image en fait), qui ne travaillent pas vraiment sur les objets en questions.

    Citation Envoyé par bzh_nicolas Voir le message
    En gros soit tu fais un fichier fourre-tout avec un nom "qui passe".
    Soit tu tries tes fonctions et méthodes selon ce qu'elles font où les types sur lesquels elles travaillent.
    La 2e solution me plaît bien

  8. #7
    invite2d7144a7

    Re : Un "main" de 1400 lignes en C++... comment faire plus court?

    Bonjour,
    Citation Envoyé par fiatlux Voir le message
    Mais en réalité, je ne veux pas forcément diminuer la longueur de mon code
    Ce qui est incompatible avec ton titre :

    Un "main" de 1400 lignes en C++... comment faire plus court?

    [TROLL]
    Citation Envoyé par fiatlux Voir le message
    (malgré les 1400 lignes, mais c'est un gros projet, fait sur 6 mois)
    Un gros projet avec 1400 lignes ?

    Et ce, en 6 mois. Tu travailles 2 minutes par jour ?

    [/TROLL]

  9. #8
    Jack
    Modérateur

    Re : Un "main" de 1400 lignes en C++... comment faire plus court?

    Mes classes représentent plutôt des objets


    Je ne vois pas trop ce que ça peut être d'autre, les objets étant juste des instances de classe.

    Un "main" de 1400 lignes en C++... comment faire plus court?
    C'est vrai que ça semblait surprenant avant de voir qu'il s'agissait du nom du fichier et pas celui de la fonction.

    Bon courage

    A+

  10. #9
    piwi

    Re : Un "main" de 1400 lignes en C++... comment faire plus court?

    Comme Jack, je pense qu'une bonne méthode pour les fonctions algorithmiques est de les ranger dans des fichiers créés par regroupement logique de fonction (les fonctions qui calculent, les fonctions qui ordonnent, les fonctions de traitement de chaines, etc...)

    C'est propre et en plus vous même vous savez ou retrouver vos fonctions et où ranger les nouvelles que vous créez.

    Cordialement,
    piwi
    Je sers la science et c'est ma joie.... Il parait.

  11. #10
    invitea29b3af3

    Re : Un "main" de 1400 lignes en C++... comment faire plus court?

    Merci pour vos réponses.
    Oui, c'est vrai que le titre est un peu ambigu, je parlais effectivement du fichier "main.cpp" et non pas de la fonction main.

    Citation Envoyé par whoami Voir le message
    Un gros projet avec 1400 lignes ?
    Et ce, en 6 mois. Tu travailles 2 minutes par jour ?
    Héhé Non, mais je ne bosse pas que là-dessus. Et de plus, chaque ligne me prend beaucoup plus de temps car 1) c'est des algorithmes de traitement d'image pour brutes épaisses (ca m'est arrivé de passer 10 jours à écrire 7 lignes, mais y'a pas que du codage, y'a de la recherche à côté. L'implémentation est juste une des étapes du projet) et 2) j'ai pas encore l'habitude du C++, je code sous Matlab d'habitude (car bien adapté pour le traitement d'image).

    Citation Envoyé par Jack Voir le message


    Je ne vois pas trop ce que ça peut être d'autre, les objets étant juste des instances de classe.
    Oui héhé : cf ci-dessus, je découvre un peu le C++, j'ai plus l'habitude de Java et nettement plus de Matlab.

    Comme Jack, je pense qu'une bonne méthode pour les fonctions algorithmiques est de les ranger dans des fichiers créés par regroupement logique de fonction
    C'est ce que j'ai choisi de faire

  12. #11
    Jack
    Modérateur

    Re : Un "main" de 1400 lignes en C++... comment faire plus court?

    YAPUKA alors!

Discussions similaires

  1. "fondamentales", "dures", "molles" ... : comment classer les sciences ?
    Par invite3e35cfa1 dans le forum Epistémologie et Logique (archives)
    Réponses: 13
    Dernier message: 22/04/2017, 23h41
  2. comment faire un TP "police scientifique" pour des collégiens
    Par invitef161a199 dans le forum Chimie
    Réponses: 2
    Dernier message: 02/12/2010, 03h01
  3. Comment faire passer "l'abstraction" des mathématiques ?
    Par invite194ec782 dans le forum Discussions scientifiques
    Réponses: 100
    Dernier message: 03/05/2010, 22h49
  4. comment supprimer le virus " main exoclick" ?
    Par invite85765483 dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 8
    Dernier message: 12/08/2009, 17h43
  5. Option d'alimentation : basculer de "mise en veille" à "ne rien faire"
    Par invited7399af6 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 04/04/2008, 19h29