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 :

methode de programmation


Sujet :

C++

  1. #41
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Ah ben non is_checked suppose que tu vas parcourir un certain nombre d'icones pour voir laquelle est checkée/selectionnée. Je parlais d'un cas ou tu ne peux en avoir qu'une seule a la fois ou pas du tout.

    C'est correcte logiquement, mais pas du poitn de vu des perfs! (surtout
    De plus, tu as toujours le risque d'arriver a un état ou plusieurs icones sont selectionnées en même temps, or si ce n'est pas le comportement voulu (une seule maximum) c'est potentiellement un probleme.

    En fait mon exemple n'est pas clair.
    Imaginons que je fasse un petit jeu où on a une représentation de la main droite du héros. Cette main ne peut tenir qu'un seul item a la fois pour l'utiliser, ou pas d'item du tout. Chaque item est différent et unique et possède un pouvoir activé dés que le joueur le met dans la main du heros (une methode appliquant le pouvoir, appelée régulièrement).
    Tu as globalement deux manières de faire la partie qui permet de savoir quel objet on a dans la main (pour pouvoir appeler sa methode de pouvoir) ou qu'il n'y a pas d'objet dans la main :
    a) utiliser un identifiant (par exemple un index) et déclarer une valeur de cet identifiant qui corresponds à "pas d'objet".
    b) utiliser un pointeur vers l'objet en question, si il est a null alors il n'y a pas d'objet dans la main.

    En fait, c'est la même solution, sauf que a) nécessite de coder quelque chose qui est déjà là au final dans le language. De plus a) t'oblige a connaitre dans le code appelant la façon dont sont organisés les objets item. Même si le code est minime, c'est le même principe.
    Autant utiliser b) dans ce cas là par exemple.

  2. #42
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Pareil, utiliser un type qui rend explicitement optionnel le truc est bien plus sûr que des pointeurs.
    Boost ftw

  3. #43
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Je sais que c'est un peu hors sujet, mais je n'ai pas encore trouvé d'explication suffisament convaincante de cette affaire liée aux pointeurs NULL (comme quoi, avoir à en gérer serait un code smell...). Est-ce que quelqu'un maitrise bien le sujet ?
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  4. #44
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Pareil, utiliser un type qui rend explicitement optionnel le truc est bien plus sûr que des pointeurs.
    Si je comprend bien ce que tu dit, tu as toujours un objet qui correspond au NULL
    En gros un objet non initialisé que tu peut tester.
    Alors quel différence avec le teste d'un pointeur à 0 ؟


    ce fork à créé un thread :
    http://www.developpez.net/forums/sho...13#post3523313
    merci de continuer dans celui ci

  5. #45
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Pour revenir au sujet initial, je pense qu'il faut faire attention à ce que l'on entend par "méthode" et de toujours spécifier le contexte et à quel niveau on se situe, sinon le mot "méthode" a encore moins de sens que la vierge. Je m'explique:

    Par exemple, 2 cas (je prend des extrêmes pour que ce soit plus clair):
    1/ Tu dois concevoir le produit de A à Z, gérer le client (s'assurer qu'il sait ce qu'il veut et qu'il accepte ce que tu lui proposes), les fournisseurs (s'il y en a), gérer une équipe (recrutement etc.).
    2/ Ton chef te fourni les diagrammes UML complets des 3 classes que tu dois implémenter.

    Ce sont des extrêmes, mais on voit bien ici que les méthodes que nous allons appliqués n'ont rien en commun.

    Ensuite, des méthodes, il en existe beaucoup, et à tous les niveaux. Maintenant, après quelques expériences plus ou moins réussies, je préfère aujourd'hui utiliser ces méthodes comme des FAQ que comme un guide complet, je veux dire que je vais y pêcher des idées plutôt que de les suivre à la lettre. Car dans la vraie vie, aucune méthode n'est universelle. Par exemple tu ne vas par dérouler un RUP complet pour faire un batch de copie de BD. Tu ne va pas non plus te lancer dans du XP "à la lettre" si tu es le seul développeur.

    Idem quand on parle de conception, ça dépend du projet. On ne fait pas systématiquement les 9 diagrammes UML (d'ailleurs ça n'aurait aucun sens).

    Pour ma part, pour un projet de taille moyenne (du style: 1 CP, 6 developpeurs dont 1 senior), je trouve que le mix suivant fonctionne bien:
    1 - analyse fonctionnelle
    -> on ferme le cahier des charges ("fermer" c'est un bien grand mot, mais il est ultra important de limiter les modifications "en vol" du cahier des charges)
    -> description des "use case". Les "use case" sont la colonne vertébrale du projet, je crois aujourd'hui qu'il est indispensable de bien les gérer des le début.
    -> description des tests à partir des UC (use case). Je ne parle pas ici des tests unitaires (je ne suis pas trop pour les tests unitaires d'ailleurs), mais des tests d'utilisation. En gros, un test pour chaque UC.

    2 - conception
    -> ici c'est selon les besoins. Les difficilement évitables sont le diagramme de classe et au moins un diagramme de collaboration. Depuis que je ne suis plus en France, je n'ai bossé que sur des projets où un diagramme détat et un diagramme de séquence sont indispensables, mais ce n'est pas toujours le cas.
    Ensuite c'est toujours pareil, selon le contexte, on va aller plus ou moin loin dans les détails de la conception.

    3 - agenda et répartition des tâches
    il est indispensable de se fixer des "mile stone" et de répartir les tâches. Déterminer une durée pour une tâche est très difficile, et seule l'expérience permet de ne pas trop se tromper.

    4 - développement d'une version
    à chaque mile stone correspond une version. Chaque version implémente une partie des fonctionnalité et spécifie clairement celles qu'elle n'implémente pas.

    5 - tests de la version
    les tests vont dépendre du contexte. Par exemple, si on a une équipe "qualité" à disposition, les tests seront plus longs et ne seront pas effectués par les développeurs (pratique conseillée mais pas toujours possible).

    si ces tests (ou le developpement en lui-même) font ressortir des erreurs de conception ou des oublis, on refait une passe sur la conception.

    Ensuite on itère les pas 4 et 5 jusqu'à la fin.


    C'est un mix de RUP et de XP.

    My cent.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  6. #46
    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 : 49
    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
    Points : 16 213
    Points
    16 213
    Par défaut
    Juste une remarque, j'ai l'impression que nombre de gens utilisent les tests comme un moyen de "valider", triturer, affiner les specs avant de passer à la réalisation. J'ai tendance pour ma part à utiliser la documentation technique, que je rédige avant de coder, pour le même effet.
    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.

  7. #47
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    J'ai tendance pour ma part à utiliser la documentation technique, que je rédige avant de coder, pour le même effet.
    Ça ressemble à quoi ? Tu la rédiges à la main ?
    Tu génères du code à partir de la documentation ou il faut synchroniser manuellement la documentation et le code lors des mises à jour ?

    MAT.

  8. #48
    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 : 49
    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
    Points : 16 213
    Points
    16 213
    Par défaut
    Non, du tout manuel. Mais je ne parle pas de la documentation de chaque fonction, mais plutôt d'une documentation d'un niveau un peu plus élevé.

    En gros, des schémas UML, le texte qui les accompagne pour expliquer les alternatives possibles et les raisons du choix, la description des algos principaux, un mode d'emploi "philosophique" (pour un vector, j'expliquerais la contiguïté de mémoire, la stratégie de croissance (avec démonstration du O(1) amorti), mais pas la syntaxe exacte de push_back)...

    Bref, des choses qui restent stables en présence de petits changements dans l'interface.
    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.

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/01/2009, 10h09
  2. [applet] appeler des methodes d'un programme en C
    Par allserv dans le forum Applets
    Réponses: 7
    Dernier message: 20/03/2007, 11h03
  3. Réponses: 7
    Dernier message: 23/01/2007, 11h08
  4. Methode de programmation
    Par afrikha dans le forum Composants
    Réponses: 5
    Dernier message: 09/12/2005, 04h48
  5. Methode de programmation sur des gros projets
    Par dynobremo dans le forum EDI
    Réponses: 10
    Dernier message: 08/06/2004, 02h59

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