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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de elmcherqui
    Profil pro
    Inscrit en
    Février 2008
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2008
    Messages : 281
    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
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 472
    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 Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    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 : 952
    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 : 48
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    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 : 62
    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
    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 : 48
    Localisation : Suisse

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    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
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    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).

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    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.

+ 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