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 :

question sur une habitude de programmation en C


Sujet :

C

  1. #1
    Membre averti Avatar de elmcherqui
    Profil pro
    Inscrit en
    Février 2008
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2008
    Messages : 281
    Points : 382
    Points
    382
    Par défaut question sur une habitude de programmation en C
    bonsoir ,
    voila maintenant quelque temps que je programme en C mais rien de bien gros juste des algorithmes sur france-ioi qui ne dépassent pas les 100lignes . mais maintenant j'aimerais creer de plus gros programmes vu que j'attaquerai bientôt une lib et j'aimerais poser une question sur vos habitudes, en programmation modulaire .
    admettons qu'on a tous écrit sur papier ( fonction dont on a besoin , ce qu'elle retournent , nombre variable )
    mais quand on a écrit ces fonctions sur le fichier .c , est ce qu'on commence directement a ecrire le programme ou bien on les test une par une d'abord ?

    j'aimerais savoir comment vous faite lorsque vous voulez attaquer un gros programme .
    merci pour vos reponses et bonne soiree .

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 620
    Points
    23 620
    Par défaut
    Citation Envoyé par elmcherqui Voir le message
    mais quand on a écrit ces fonctions sur le fichier .c , est ce qu'on commence directement a ecrire le programme ou bien on les test une par une d'abord ?
    Je ne comprends pas trop où tu veux en venir. Si tu as écrit une lib, alors oui, elle est en elle-même un programme à part entière. Et comme, en plus, d'autres logiciels vont s'appuyer dessus, elle doit être irréprochable. La suite de tests doit donc être assez sérieuse.

    Sinon, la seule chose qui permettent de mener à bien de gros projets, c'est la rigueur comme partout.

    - Prends l'habitude de mettre des commentaires, même pour toi. Ce qui est évident aujourd'hui sera obscur dans un an.

    - Reste cohérent (politique de nommage, prototypes de fonctions, etc.) à travers tout ton projet.

    - Choisis la granularité de tes fichiers. N'utilise pas un seul gros fichier *.c pour l'ensemble de ton projet, mais découpe le plutôt en sections (par thème), ne serait-ce que pour éviter d'avoir à tout recompiler à chaque modif'. Au début c'est rapide, surtout aujourd'hui, mais très vite, ça devient lourd. Et quand tu passes du C au C++, c'est encore pire. Évidemment, ce n'est pas non plus la peine de faire un fichier par fonction (ou par classe, en POO, comme en Java).

    - Utilise éventuellement un logiciel de versioning. Très pratique pour tout conserver au même endroit, faire du travail collaboratif, et se permettre de pouvoir faire évoluer son projet en se garantissant la possibilité de revenir au dernier état stable en cas de problème.

    Après, il existe des méthodes scientifiques pour mener de gros projets et garantir, autant que faire se peut, la validité du logiciel produit, mais ça devient très costaud.

  3. #3
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    Si je devais faire une lib, j'assurerais d'abord un gros jeu de tests unitaires. chez Emmanuel: http://delahaye.emmanuel.free.fr/spip.php?article23

    A+

    Pfeuh

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Une bonne pratique est d'écrire les tests avant d'écrire la fonction.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    Une bonne pratique est d'écrire les tests avant d'écrire la fonction.

    Thierry
    Je dirais plutôt que : Une bonne pratique est de décrire les tests avant d'écrire la fonction.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  6. #6
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Je dirais plutôt que : Une bonne pratique est de décrire les tests avant d'écrire la fonction.
    Personnellement, je les écrits et je les exécute régulièrement au cours du développement de la fonction.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 276
    Points : 36 761
    Points
    36 761
    Par défaut
    Je serais plutôt d'accord avec ram-0000: avant d'écrire il est utile de décrire.
    Ensuite côté codage, on peut commencer par les tests surtout si les fonctions sont dans un premier temps réduites à un "mockup".
    - W
    PS: "mockup" on traduirait cela comment dans notre langue?
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Ensuite côté codage, on peut commencer par les tests surtout si les fonctions sont dans un premier temps réduites à un "mockup".
    - W
    PS: "mockup" on traduirait cela comment dans notre langue?
    Je dirais "fonction bouchon" si j'ai compris ce que tu veux dire : fonction vide, sans traitement, qui respecte l'interface d'appel de la future fonction et que l'on peut appeler.

    J'ai bon ?
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 276
    Points : 36 761
    Points
    36 761
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Je dirais "fonction bouchon" si j'ai compris ce que tu veux dire : fonction vide, sans traitement, qui respecte l'interface d'appel de la future fonction et que l'on peut appeler.

    J'ai bon ?
    "fonction bouchon" me va bien...
    merci
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par elmcherqui Voir le message
    maintenant j'aimerais creer de plus gros programmes vu que j'attaquerai bientôt une lib et j'aimerais poser une question sur vos habitudes, en programmation modulaire .
    admettons qu'on a tous écrit sur papier ( fonction dont on a besoin , ce qu'elle retournent, nombre variable )
    Il y a 2 choses importantes à spécifier :
    • L'interface
      • Nom de la fonction
      • Type retourné
      • Paramètres
    • Le comportement attendu.
      • Nominal
      • Extrême
      • Hors limites

    mais quand on a écrit ces fonctions sur le fichier .c , est ce qu'on commence directement a ecrire le programme ou bien on les test une par une d'abord ?
    Il y a plusieurs façons de faire. J'aime commencer par les tests.

    On écrit les scénarios de test en s'appuyant sur la spécification détaillée (exposée au-dessus), et on appelle la fonction (au début, vide). On retourne quelques erreurs 'en dur' pour valider le test, puis on commence à coder la fonction 'sous le contrôle du programme de test'.

    Dès qu'on a écrit quelques lignes de code stables (0 warnings), on exécute et on interprète les résultats du tests (commencer par quelques tests basiques qui vérifient uniquement le comportement normal). Éventuellement on corrige, ou on constate que 'l'erreur est juste'.

    Ensuite, on complète jusqu'à obtenir un comportement nominal conforme.

    Ensuite, on teste aux limites. on corrige les éventuels bugs.

    Enfin, on teste les hors limites, ça doit résister (pas de crash, arrêt de l'application, code retour particulier, message etc. selon la gravite).

    j'aimerais savoir comment vous faite lorsque vous voulez attaquer un gros programme .
    1 - Une définition très solide
    2 - Une grosse analyse descendante

    (les points 1 et 2 sont récursifs et aboutissent à un arbre dont les feuilles sont des fonctions de base).

    L'usage d'outils d'organisation comme FreeMind peut aider.

    3 - une construction montante avec de tests unitaires en même temps

    C'est le B.A. BA de toute construction industrielle (pont, immeuble, auto, nacire etc.). L'informatique n'y échappe pas.
    Pas de Wi-Fi à la maison : CPL

  11. #11
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Je dirais plutôt que : Une bonne pratique est de décrire les tests avant d'écrire la fonction.
    Les méthodes agiles cherchent à éviter la paperasse inutile.

    Écrire le test avant le codage de la fonction permet d'éviter cette phase de rédaction qui n'apporte rien que de la perte de temps (le seul document important est la spec).
    Pas de Wi-Fi à la maison : CPL

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    "mockup" on traduirait cela comment dans notre langue?
    Déjà, on ne dit pas mockup, mais stub. En français, leurre, bouchon, simulation...
    Pas de Wi-Fi à la maison : CPL

  13. #13
    Membre averti Avatar de elmcherqui
    Profil pro
    Inscrit en
    Février 2008
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2008
    Messages : 281
    Points : 382
    Points
    382
    Par défaut
    merci emmanuel c'est precisement ce que je voulais savoir .

  14. #14
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    "mockup" s'emploie surtout en informatique pour une interface graphique, en fait.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 276
    Points : 36 761
    Points
    36 761
    Par défaut
    Dans le monde du TDD, mock, stub, fake,... ont des définitions assez surprenantes côté précision.

    Voir:
    http://robsanheim.com/2006/01/19/nam...ock-stub-fake/
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  16. #16
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Dans le monde du TDD, mock, stub, fake,... ont des définitions assez surprenantes côté précision.

    Voir:
    http://robsanheim.com/2006/01/19/nam...ock-stub-fake/
    - W
    Effectivement. Mon stub se comporte comme un mock au début...
    Pas de Wi-Fi à la maison : CPL

  17. #17
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Effectivement. Mon stub se comporte comme un mock au début...
    ça vaudrait un post dans la Taverne, ça
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

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

Discussions similaires

  1. [VB2003][ACCESS] Question sur une requete
    Par Kanie dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/03/2006, 17h25
  2. Question sur une relation ternaire dans un MCD
    Par sylsau dans le forum Schéma
    Réponses: 5
    Dernier message: 05/03/2006, 20h00
  3. Réponses: 4
    Dernier message: 20/01/2006, 16h03
  4. [Newbies] Question sur une technologie XML a utiliser
    Par superraider dans le forum Windows
    Réponses: 3
    Dernier message: 21/10/2005, 10h01
  5. [jdbc] question sur une connection
    Par berg dans le forum JDBC
    Réponses: 2
    Dernier message: 10/09/2005, 08h29

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