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 :

Echelle de Goret


Sujet :

C

  1. #121
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 131
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par Jack_serious
    Les fonctions de 300 lignes ? Ah non surement pas...

    Parce que c'est pas seulement chiant pour le mec qui va relire le code, ca l'est surtout pour toi quand tu developpe et que tu dois debugguer.

    Faire du code bien structure est la premiere chose a apprendre.
    hé oui ca existe bel et bien.
    Et crois moi c'est pas la joie surtout quand tu faire des rajout ou des modifications.

  2. #122
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations forums :
    Inscription : Octobre 2005
    Messages : 141
    Points : 135
    Points
    135
    Par défaut
    Quand tu as 300 fonctions aussi, c'est dur de s'y retrouver.

  3. #123
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 62
    Points : 48
    Points
    48
    Par défaut
    J'ouvre mon K&R page 262.
    Ici est présentée entre autres la fonction ctime dont le prototype est le suivant:
    char* ctime(const time_t* tp);
    Elle retourne donc une chaine de caractères. Je ne sais pas trop d'ou elle vient. D'après mes tests elle n'est pas sur la pile (pas avec mon compilo en tous cas).
    Je me trompe ou cette fonction est un très bon exemple du Goret-Style?

    Après véfication, il s'agit d'un malloc, le code suivant ne plantant pas a l'exécution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    time_t tp(0);
    free(ctime(&tp));

  4. #124
    Membre averti Avatar de Jack_serious
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    350
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 350
    Points : 396
    Points
    396
    Par défaut
    A partir d'une certaine taille de code il faut faire un bon decoupage.

    Si les fonctions on des noms parlant, et les fichiers qui les contiennes aussi, et que le code est bien decoupe avec des fonctions de longueur raisonnable, avec 300 fonction c'est largement lisible.

    Il faut juste eviter les fonctions trop longues (30 ~ 40 lignes) et ne pas mettre trop de fonctions par fichier pour qu'on puisse les retrouver rapidement (5 fonctions par fichier).

    En plus quand on depasse les 200 fichiers la compilation devient magnifique.
    Don't worry, be serious.
    La vie est courte. Prenez votre temps.

    Jack.

  5. #125
    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 gnto
    Et l'inverse c'est chiant plein de petite focntion moins de 15 lignes. argg...
    Bof, si ça répond à un besoin bien défini, pourquoi pas. Quand on fait des ADT, on fait des des accesseurs de 2-3 lignes, mais on a pas le choix...

    http://emmanuel-delahaye.developpez.com/tad.htm
    Pas de Wi-Fi à la maison : CPL

  6. #126
    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 socrate
    J'ouvre mon K&R page 262.
    Ici est présentée entre autres la fonction ctime dont le prototype est le suivant:
    char* ctime(const time_t* tp);
    Elle retourne donc une chaine de caractères. Je ne sais pas trop d'ou elle vient.
    D'un variable statique. C'est écrit quelques lignes plus haut... C'est dingue pas savoir lire à ce point là...
    Je me trompe ou cette fonction est un très bon exemple du Goret-Style?
    Absolument. C'est une des fonctions dont certains demandent la révision ("google n1031")

    http://www.open-std.org/JTC1/SC22/WG...docs/n1031.pdf

    3.5 Date and time <time.h>
    3.5.1 Time conversion functions
    1 Like the strftime function, the asctime_s and ctime_s, functions do not return a
    pointer to a static object, and other library functions are permitted to call them.
    Après véfication, il s'agit d'un malloc, le code suivant ne plantant pas a l'exécution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    time_t tp(0);
    free(ctime(&tp));
    Non. Comportement indéfini.
    Pas de Wi-Fi à la maison : CPL

  7. #127
    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 Jack_serious
    En plus quand on depasse les 200 fichiers la compilation devient magnifique.
    Après on travaille par bibliothèques. La hiérachie est la suivante :

    Projet -> Applications -> Exécutables -> Bibliothèques + 1 main.c -> Unités de compilations -> Fonctions.
    Pas de Wi-Fi à la maison : CPL

  8. #128
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Après on travaille par bibliothèques. La hiérachie est la suivante :

    Projet -> Applications -> Exécutables -> Bibliothèques + 1 main.c -> Unités de compilations -> Fonctions.
    Puis je avoir des précision sur bibliothèque + 1 main.c ?

  9. #129
    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 gnto
    Puis je avoir des précision sur bibliothèque + 1 main.c ?
    Tu regroupes les fonctions en blocs fonctionnels, tu en fais une ou des bibliothèques, et pour réaliser l'application , il faut bien au moins un main() quelque part. En général, on ne le met pas en bibliothèque (laquelle ?), mais on le met dans un main.c. C'est lui qui lance toutes les initialisations, crée et lance les taches... et se saborde (ou tombe alors en tache de fond on de debug...) ou attend sagement que tout le bazar se termine pour quitter proprement... Tout dépend du style d'application... Chez nous c'est du 24/7, alors pas de fin...
    Mais maintenant qu'on a du Linux embarqué, on peut envisager un arrêt de certains services...
    Pas de Wi-Fi à la maison : CPL

  10. #130
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    Oui tu peux alors aussi creer des librairies

  11. #131
    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 gnto
    Oui tu peux alors aussi creer des librairies
    Cest quoi ça ?

    http://emmanuel-delahaye.developpez....m#bibliotheque
    Pas de Wi-Fi à la maison : CPL

  12. #132
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210

  13. #133
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    oui, apparement tu appeles ca bibliotheque

  14. #134
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 62
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    D'un variable statique. C'est écrit quelques lignes plus haut... C'est dingue pas savoir lire à ce point là...
    Perso je vois pas de quoi tu parles, c'est pas écrit dans mon bouquin.
    Et sous mon compilo, il s'agit bien de mémoire allouée avec malloc (que tu le veuille ou non, j'obtiens un erreur quand je fais un free sur autre chose que de la mémoire allouée avec malloc)

  15. #135
    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 socrate
    Perso je vois pas de quoi tu parles, c'est pas écrit dans mon bouquin.
    J'ouvre mon K&R page 262 et je lis :

    "Les quatre fonctions suivantes retournent des pointeurs sur des objets statiques qui peuvent être écrasés par d'autres appels"
    suivent :
    • asctime()
    • ctime()
    • gmtime()
    • localtime()
    Et sous mon compilo, il s'agit bien de mémoire allouée avec malloc
    Alors ce n'est pas conforme à la norme. Montre la doc de la fonction sur ton compilateur. Donne la référence de ton compilateur.
    (que tu le veuille ou non, j'obtiens un erreur quand je fais un free sur autre chose que de la mémoire allouée avec malloc)
    Moi, je dis simplement que le comportement est indéfini, c'est tout.
    Si ton compilateur prend des libertés avec la norme, ce n'est plus du C et la demande de free() doit être explicite dans le doc. Sinon, c'est du pipeau.

    La norme est claire là dessus :
    Citation Envoyé par ISO/IEC 9899:1999 Page 340-342
    <...>
    7.23.3 Time conversion functions
    1 Except for the strftime function, these functions each return a pointer to one of two
    types of static objects
    : a broken-down time structure or an array of char. Execution of
    any of the functions that return a pointer to one of these object types may overwrite the
    information in any object of the same type pointed to by the value returned from any
    previous call to any of them. The implementation shall behave as if no other library
    functions call these functions.
    7.23.3.1 The asctime function
    <...>
    Returns
    3 The asctime function returns a pointer to the string.
    7.23.3.2 The ctime function
    <...>
    Returns
    3 The ctime function returns the pointer returned by the asctime function with that
    broken-down time as argument.
    Forward references: the localtime function (7.23.3.4).
    7.23.3.3 The gmtime function
    Synopsis
    <...>
    Returns
    3 The localtime function returns a pointer to the broken-down time, or a null pointer if
    the specified time cannot be converted to local time.
    <...>
    Pas de Wi-Fi à la maison : CPL

  16. #136
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 886
    Points : 1 526
    Points
    1 526
    Par défaut
    Petite remarque parce que je viens de tomber sur le cas, dans l'échelle de goret, il manque le copié-collé de plus de 10 lignes. Style le mec qui ne connait que le while, pas le do:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if (Condition)
       {
       // Traitement
       ...
       while (Condition)  // La même que dans le if
          {
          // Copié-collé de traitement
          ...
          }
       }
    Moi, je le mettrais facile à l'echelle 7 ou 8.

  17. #137
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Citation Envoyé par gnto
    oui, apparement tu appeles ca bibliotheque
    C'est pas ça le problème, c'est que librairie c'est pas la bonne traduction de library.
    Librairie en anglais c'est bookshop!

  18. #138
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    Citation Envoyé par HanLee
    C'est pas ça le problème, c'est que librairie c'est pas la bonne traduction de library.
    Librairie en anglais c'est bookshop!
    merci !

  19. #139
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    Je voulais savoir suite à une petite discussion sur les standards, qui en ce moment sont ma principale occupation, si c'est goret d'utiliser du POSIX alors que l'on peut utiliser du ANSI C ???

  20. #140
    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 gnto
    Je voulais savoir suite à une petite discussion sur les standards, qui en ce moment sont ma principale occupation, si c'est goret d'utiliser du POSIX alors que l'on peut utiliser du ANSI C ???
    Oui !

    Le choix doit se faire comme ceci :
    1. Standard C
    2. POSIX.1 (ou 2)
    3. Fonctions maison portables
    4. Fonctions systèmes
    5. Fonctions maison non portables
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. [PHP 5.4] conception squelette objet : quelle note sur l'echelle du goret?
    Par balja dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2013, 13h21
  2. [excel] echelle dynamique dans un graph
    Par shirya dans le forum Excel
    Réponses: 1
    Dernier message: 17/10/2005, 17h49
  3. [JTree] Echelle
    Par Micky1407 dans le forum Composants
    Réponses: 1
    Dernier message: 18/07/2005, 13h11
  4. echelle et openGl
    Par pfourtz dans le forum OpenGL
    Réponses: 13
    Dernier message: 03/05/2005, 23h00
  5. Réponses: 2
    Dernier message: 17/05/2002, 20h37

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