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

Langage C++ Discussion :

Remplacer des getter/setter par l'overload de l'opérateur () d'un wrapper


Sujet :

Langage C++

  1. #21
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Il n'y a que des relations 1<->1.

    Un tronçon ne peut avoir qu'une seule vitesse statistique. Et si deux tronçons ont la même vitesse, au centième de km/h près, ce n'est que par pure coïncidence, et on va de toute façon modéliser ça par deux entités de vitesses différentes.

    Ce que tu proposes imposes soit de maintenir un lien entre les instances de tronçons et de vitesses, soit de faire que la vitesse soit une instance membre du tronçon. Mais je ne vois toujours pas l'intérêt.

    Si tu ne veux connaître que la distance, tu fais un getDistance() sur le tronçon. Mais de toute façon, la distance devra être connue pour calculer le temps nécessaire au parcours du tronçon.

    Sous quelle sémantique regrouperais-tu la vitesse, le temps, et la distance ? Comment appellerais-tu la classe ? Sachant que la distance est une caractéristique intrinsèque du tronçon.

  2. #22
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par oodini Voir le message
    Ce que tu proposes imposes soit de maintenir un lien entre les instances de tronçons et de vitesses, soit de faire que la vitesse soit une instance membre du tronçon. Mais je ne vois toujours pas l'intérêt.
    Mais le lien peut etre beaucoup plus faible que de se balader avec l'ensemble du tronçon dont on n'a pas forcément l'usage
    Si tu ne veux connaître que la distance, tu fais un getDistance() sur le tronçon. Mais de toute façon, la distance devra être connue pour calculer le temps nécessaire au parcours du tronçon.
    Pour évaluer le temps de parcours théorique, tu devras connaitre la distance et la vitesse maximale autorisée sur le tronçon, qui sont, effectivement, deux données intrinsèques du tronçon.

    Par contre, pour connaitre un temps de parcours estimé (sur base des temps de parcours précédents s'entend), tu n'as absolument pas besoin de connaitre la distance effective: il faut juste que tu connaisse la moyenne des temps de parcours (et la logique est identique pour les vitesses )

    A partir du moment où tu as un tronçon clairement identifié et que tu sais retrouver les temps de parcours, que tu aies 100 m ou 10 km à parcourir ne t'importe pas vraiment si tu sais que tu vas mettre dix minutes à les faire
    Sous quelle sémantique regrouperais-tu la vitesse, le temps, et la distance ? Comment appellerais-tu la classe ? Sachant que la distance est une caractéristique intrinsèque du tronçon.
    La vitesse maximale et la distance, c'est le tronçon, de manière très claire

    Pour les temps de parcours, sous une sémantique d'historique, tout simplement

    Après tout, ce n'est que cela, non
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #23
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Par contre, pour connaitre un temps de parcours estimé (sur base des temps de parcours précédents s'entend), tu n'as absolument pas besoin de connaitre la distance effective: il faut juste que tu connaisse la moyenne des temps de parcours (et la logique est identique pour les vitesses )
    Tu ne disposes pas de cette donnée ; tu ne peux estimer le temps de parcours que par la vitesse, statistique, et par la longueur du tronçon. La distance Le temps de parcours a le cul entre deux chaises : elle est déterminée par un élément de chacune de tes classes. Dès lors, quelle est la classe qui devra la gérer ?

  4. #24
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par oodini Voir le message
    Tu ne disposes pas de cette donnée ;
    Pas forcément:

    Tu as de toutes manières un top au début et un top à la fin du tronçon, que ce soit pour calculer la vitesse moyenne sur le tronçon ou pour calculer le temps de parcours.

    Plutôt que de sauvegarder la vitesse moyenne, sauvegarde le temps de parcours, ca t'évites en plus un calcul supplémentaire (même si ce n'est qu'une règle de trois )
    tu ne peux estimer le temps de parcours que par la vitesse, statistique, et par la longueur du tronçon.
    ou par des donnée d'historique: si un tronçon autorise une vitesse maximale de 120km/h (130 en france) mais que tu passes systématiquement à l'heure de pointe et que ta vitesse est réduite à 25km/h en moyenne, tu ne vas pas aller descendre la vitesse maximale sur ce tronçon, car cela fausserait tout le reste (entre autre, tu aurais un avertissement désagréable le jour où tu passes, exceptionnellement, hors heure de pointe ).
    La distance a le cul entre deux chaises : elle est déterminée par un élément de chacune de tes classes.
    La distance, non, elle est déterminée par le tronçon de la route à emprunter (ou par un ensemble de tronçons de route reliant le point d'origine au point d'arrivée)

    Si tu m'avais parlé de la durée du parcours, j'aurais peut etre compris, mais pas que tu vienne me parler de la distance

    Et c'est pour cela que je fais une différence entre la durée théorique (celle que l'on mettra à effectuer le parcours en roulant systématiquement à la vitesse maximale autorisée) et la durée estimée (celle qui sera évaluée sur base des temps de parcours moyens relevés) du parcours
    Dès lors, quelle est la classe qui devra la gérer ?
    Ben, le tronçon, vu que cette question se rapporte à la distance
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #25
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Tu as de toutes manières un top au début et un top à la fin du tronçon, que ce soit pour calculer la vitesse moyenne sur le tronçon ou pour calculer le temps de parcours.
    Non. Je dispose juste de la vitesse moyenne sur ce tronçon. Mais elle n'est pas calculée, elle est donnée (de temps en temps).

    Citation Envoyé par koala01 Voir le message
    Plutôt que de sauvegarder la vitesse moyenne, sauvegarde le temps de parcours, ça t'évite en plus un calcul supplémentaire
    J'ai autant besoin de demander la vitesse que la distance.

    Citation Envoyé par koala01 Voir le message
    si un tronçon autorise une vitesse maximale de 120km/h (130 en france) mais que tu passes systématiquement à l'heure de pointe et que ta vitesse est réduite à 25km/h en moyenne, tu ne vas pas aller descendre la vitesse maximale sur ce tronçon, car cela fausserait tout le
    reste
    Exact. Je ne mets à jour cette vitesse que rarement.

    Citation Envoyé par koala01 Voir le message
    La distance, non, elle est déterminée par le tronçon de la route à emprunter (ou par un ensemble de tronçons de route reliant le point d'origine au point d'arrivée)

    Si tu m'avais parlé de la durée du parcours, j'aurais peut etre compris, mais pas que tu vienne me parler de la distance
    Tu as tout à fait raison : je pensais au temps de parcours (c'est d'ailleurs à cela que se referait la citation que j'avais faite). Boulette dans ma réponse.

    Citation Envoyé par koala01 Voir le message
    Et c'est pour cela que je fais une différence entre la durée théorique (celle que l'on mettra à effectuer le parcours en roulant systématiquement à la vitesse maximale autorisée) et la durée estimée (celle qui sera évaluée sur base des temps de parcours moyens relevés) du parcours
    Sauf qu'on ne dispose pas de la vitesse réglementaire ; la seule chose qui ne change pas, c'est la longueur du tronçon.
    Tu veux donc créer une classe A avec la vitesse, le temps de parcours, et un pointeur sur le tronçon correspondant, et une classe tronçon avec la longueur et un pointeur vers la classe A ? Sachant que les deux sont interdépendants : si je détruis l'un, je dois détruire l'autre.

  6. #26
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par oodini Voir le message
    Non. Je dispose juste de la vitesse moyenne sur ce tronçon. Mais elle n'est pas calculée, elle est donnée (de temps en temps).
    Ah, et elle vient d'où selon toi de l'opération du saint esprit

    Si elle vient "de l'extérieur", tu vas te trouver face à un très sérieux problème à cause de ceux qui roulent à des vitesses très largement supérieures à la vitesse maximale autorisée d'une part et à la vitesse observée lors des heures de pointes d'autre part.

    Tu peux difficilement estimer que la vitesse moyenne d'un automobiliste "quelconque" sera dans cet ordre d'idées.

    Plus tu te rapproches des habitude de l'utilisateur "régulier" du gps, plus tu as de chances de lui donner un temps de parcours qui correspond à son propre style de conduite.
    J'ai autant besoin de demander la vitesse que la distance.
    Pas forcément...

    La distance et la vitesse sont deux choses totalement différentes!

    Tu peux très bien n'avoir aucun besoin de la vitesse à certains moments (quand il s'agit de calculer la distance) tout comme tu peux parfaitement n'avoir aucun besoin de la distance à d'autres.

    Maintenant, il y a effectivement quelques moments où les deux peuvent t'intéresser, mais tu peux en disposer malgré tout, même si elles sont "physiquement" séparées
    Sauf qu'on ne dispose pas de la vitesse réglementaire ; la seule chose qui ne change pas, c'est la longueur du tronçon.
    Ah

    Et ton GPS fait comment pour t'afficher l'avertissement lorsque tu roules décidément trop vite

    C'est peut etre une information relativement globale par rapport au type de route du tronçon, mais cette information existe bel et bien
    Tu veux donc créer une classe A avec la vitesse, le temps de parcours, et un pointeur sur le tronçon correspondant, et une classe tronçon avec la longueur et un pointeur vers la classe A ? Sachant que les deux sont interdépendants : si je détruis l'un, je dois détruire l'autre.
    Non, je veux créer une classe A avec un identifiant de tronçon et les vitesses / temps de parcours observés, afin de pouvoir en calculer la moyenne et un tronçons qui n'est responsable que de ce dont il a réellement la responsabilité : le maintient de la distance entre deux point et celui de la vitesse maximale autorisée (en plus de son identifiant, bien sur ).

    Lorsque l'on rencontre un tronçon sur lequel on n'est jamais passé (pour lequel il n'y a pas d'historique), la vitesse estimée pour ce tronçon est égale à la vitesse maximale autorisée (c'est généralement comme cela que fonctionne les gps, non ), sinon, la vitesse estimée (ou le temps de parcours) pour ce tronçon correspond à la moyenne des vitesses (ou des temps de parcours) observées.

    A l'extrême limite, il te suffit d'une durée de parcours totale et d'un nombre de parcours (tous les deux mis à jour à chaque fois que l'on emprunte ce tronçon) pour obtenir ce genre de moyenne par simple division.
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #27
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Je vous laisse débattre entre vous de savoir s’il vaut mieux stocker la vitesse moyenne, la longueur du tronçon ou l’âge du capitaine, honnêtement la seule règle que je vois est :
    - ne stocker pas plus que nécessaire
    - ne pas stocker séparément des données dépendantes (sauf optimisation), car c’est source d’incohérence.

    Et après, chacun choisit bien ce qu’il décide de garder comme donnée de base .

    Non, ce qui m’a surpris c’est ça :

    Un tronçon ne peut avoir qu'une seule vitesse statistique. Et si deux tronçons ont la même vitesse, au centième de km/h près, ce n'est que par pure coïncidence, et on va de toute façon modéliser ça par deux entités de vitesses différentes.
    Tu envisages sérieusement de donner une sémantique d’entité à une vitesse ? Je serais curieux de connaître tes motivations.

    ah, et
    Il y a vraiment un problème de la compréhension de la langue anglaise, sur ce forum.
    La seule différence sémantique entre set et update est que update indique que le champ/membre avait déjà une valeur (qu'on considérera comme valide).
    Il n'y a aucune différence sémantique sur l'enchaînement de sous-actions qu'impliquent ces deux actions.
    set : put or bring into a specified state
    update : make (something) more modern or up to date
    (source : oxford dictionnary, mais le collins dit à peu près la même chose)

  8. #28
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    La seule différence sémantique entre set et update est que update indique que le champ/membre avait déjà une valeur (qu'on considérera comme valide).
    Si vous créez des objets dans des états invalides vous allez avoir des problèmes...

  9. #29
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par germinolegrand Voir le message
    Si vous créez des objets dans des états invalides vous allez avoir des problèmes...
    Mais le constructeur est là pour éviter que cela ne se produise
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  10. #30
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Mais le constructeur est là pour éviter que cela ne se produise
    Eheheh !

  11. #31
    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
    Citation Envoyé par oodini Voir le message
    Il y a vraiment un problème de la compréhension de la langue anglaise, sur ce forum.
    Meuh non

    Citation Envoyé par oodini Voir le message
    La seule différence sémantique entre set et update est que update indique que le champ/membre avait déjà une valeur (qu'on considérera comme valide).
    Ce qui est toujours le cas - si ça ne l'était pas, alors ça voudrait dire qu'on crée des instances d'objets invalides, ce qui n'est pas nécessairement une bonne chose A la construction, un membre est nécessairement valide, sans quoi on aura d'autres problèmes qui ne sont plus vraiment de mon ressort

    Citation Envoyé par oodini Voir le message
    Il n'y a aucune différence sémantique sur l'enchaînement de sous-actions qu'impliquent ces deux actions.
    Elle est minime, je te l'accorde. Ceci dit, se focaliser sur un terme, mal choisi ou non, ce n'est pas vraiment l'idée générale de mon intervention Le principe est avant tout de se séparer de set - quitte à utiliser des verbes tout aussi bateau ou presque, parce qu'une fois qu'on en a pris l'habitude, les noms de fonction viennent plus vite.

    Le but du nom d'une fonction n'est pas de documenter le code à l'intérieur, mais de documenter son intention dans le cadre plus général de son utilisation. On ne set pas une coordonnée, on positionne (move_to) un point dans l'espace - parce que c'est ça, l'intention. Idem, on n'initialise pas une vitesse, on accélère vers une vitesse donnée (ou d'une quantité particulière, positive ou négative ; qu'importe que cette accélération soit instantanée ou non : encore une fois, on documente l'intention, pas ce que fait le code). Je pense que si je cherche, les exemples vont venir par centaines

    Cependant, pour revenir sur la différence sémantique minime, je dirais juste ceci : si l'intention est d'initialiser une valeur, ça se fait via le constructeur, pas via un mutateur ou une autre méthode. Du coup, tout changement subséquent de cette valeur est nécessairement une mise à jour - et change ou update sont donc, à la base de meilleurs choix par défaut comparés à set.
    [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.

  12. #32
    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
    Citation Envoyé par Emmanuel Deloget Voir le message
    Le but du nom d'une fonction n'est pas de documenter le code à l'intérieur, mais de documenter son intention dans le cadre plus général de son utilisation. On ne set pas une coordonnée, on positionne (move_to) un point dans l'espace - parce que c'est ça, l'intention. Idem, on n'initialise pas une vitesse, on accélère vers une vitesse donnée (ou d'une quantité particulière, positive ou négative ; qu'importe que cette accélération soit instantanée ou non : encore une fois, on documente l'intention, pas ce que fait le code). Je pense que si je cherche, les exemples vont venir par centaines
    Encore une fois, je suis bluffé par la clarté de ta prose. C'est exactement ça: le nom d'une fonction doit correspondre à l'intention, pas à l'implémentation.
    Pourrait-on parler de "service" à la place "d'intention"?
    « 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

  13. #33
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Citation Envoyé par white_tentacle Voir le message
    Tu envisages sérieusement de donner une sémantique d’entité à une vitesse ? Je serais curieux de connaître tes motivations.
    Je ne veux donner aucune sémantique : je ne veux même pas de créer de classe pour la vitesse.

    Citation Envoyé par white_tentacle Voir le message
    set : put or bring into a specified state
    update : make (something) more modern or up to date
    (source : oxford dictionnary, mais le collins dit à peu près la même chose)
    Oui, c'est exactement ce que je disais.

  14. #34
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Citation Envoyé par germinolegrand Voir le message
    Si vous créez des objets dans des états invalides vous allez avoir des problèmes...
    En l'occurrence, je parlais d'un champ/membre.
    Et un champ/membre invalide n'implique pas que son contenant le soit.

  15. #35
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Ce qui est toujours le cas - si ça ne l'était pas, alors ça voudrait dire qu'on crée des instances d'objets invalides, ce qui n'est pas nécessairement une bonne chose A la construction, un membre est nécessairement valide, sans quoi on aura d'autres problèmes qui ne sont plus vraiment de mon ressort
    Non. Cela voudrait dire qu'on crée des objets valides dotés de champs à valeur logiquement invalides.
    Exemple : utilisation de NotANumber.

    Citation Envoyé par Emmanuel Deloget Voir le message
    Elle est minime, je te l'accorde. Ceci dit, se focaliser sur un terme, mal choisi ou non, ce n'est pas vraiment l'idée générale de mon intervention Le principe est avant tout de se séparer de set - quitte à utiliser des verbes tout aussi bateau ou presque, parce qu'une fois qu'on en a pris l'habitude, les noms de fonction viennent plus vite.
    Si on veut communiquer son intention uniquement par le nom de la fonction, il faut justement bien choisir ce nom, avec le verbe adéquat.

    Citation Envoyé par Emmanuel Deloget Voir le message
    Le but du nom d'une fonction n'est pas de documenter le code à l'intérieur, mais de documenter son intention dans le cadre plus général de son utilisation. [...] On n'initialise pas une vitesse, on accélère vers une vitesse donnée (ou d'une quantité particulière, positive ou négative ; qu'importe que cette accélération soit instantanée ou non : encore une fois, on documente l'intention, pas ce que fait le code). Je pense que si je cherche, les exemples vont venir par centaines
    En l'occurrence, la vitesse étant affectée à un tronçon de route, on ne fait pas en sorte que la route accélère...

    Citation Envoyé par Emmanuel Deloget Voir le message
    Cependant, pour revenir sur la différence sémantique minime, je dirais juste ceci : si l'intention est d'initialiser une valeur, ça se fait via le constructeur, pas via un mutateur ou une autre méthode.
    Sauf que tu ne disposes pas toujours de la valeur au moment de la construction de l'objet.
    Je veux construire mes millions d'objets quand je lance mon application, pas en prod quand je reçois de quoi setter les valeurs.

    Et l'évaluation paresseuse, vous en faite quoi ?

  16. #36
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Citation Envoyé par r0d Voir le message
    Encore une fois, je suis bluffé par la clarté de ta prose. C'est exactement ça: le nom d'une fonction doit correspondre à l'intention, pas à l'implémentation.
    Si on n'est pas d'accord sur l'intention que recouvre le mot set, cela ne résout pas le problème.

  17. #37
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    Pour tes millions d'objets... Un pool mémoire des fois ?

  18. #38
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Citation Envoyé par oodini Voir le message
    set : put or bring into a specified state
    update : make (something) more modern or up to date
    (source : oxford dictionnary, mais le collins dit à peu près la même chose)
    Oui, c'est exactement ce que je disais.


    On n’a vraiment pas la même lecture de l’anglais.

    Set : définir ou amener à l’état spécifier : setLength(10) --> j’amène la valeur Length à 10.

    Update : mettre à jour.

    Quelques différences :
    On set quelque chose to un état.
    On udpate quelque chose, éventuellement par rapport à autre chose.

    La personne qui propose updateLength(10) a effectivement un problème avec l’anglais, mais ce n’est pas celui auquel tu pensais . update s’utilisera plutôt sans paramètre.

  19. #39
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Citation Envoyé par white_tentacle Voir le message
    On n’a vraiment pas la même lecture de l’anglais.
    Effectivement.

    Citation Envoyé par white_tentacle Voir le message
    Set : définir ou amener à l’état spécifier : setLength(10) --> j’amène la valeur Length à 10.
    Comme répondu sur un autre fil :
    SPÉCIFIÉ PAR QUOI ? L'argument ou le code ?
    Ce n'est pas dit par ton dictionnaire.

  20. #40
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Citation Envoyé par oodini Voir le message
    Comme répondu sur un autre fil :
    SPÉCIFIÉ PAR QUOI ? L'argument ou le code ?
    Ce n'est pas dit par ton dictionnaire.
    Je doute effectivement que mon dictionnaire parle de code informatique dans la définition de set .

    En revanche, il va parler des arguments du verbe (COD / COI en français, quoi que ça a changé de nom depuis je crois, en anglais je ne connais pas les termes équivalents). Et je ne vois comment on peut honnêtement comprendre ça autrement que par les arguments de la fonction.

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/12/2010, 13h38
  2. Inlining des getters / setters auto avec GCC?
    Par _skip dans le forum Débuter
    Réponses: 45
    Dernier message: 17/08/2009, 12h51
  3. [PHP 5.2] Remplacer des balises html par des balises encodées
    Par gtraxx dans le forum Langage
    Réponses: 3
    Dernier message: 28/01/2009, 21h54
  4. [Template] Changer la génération des getter/setter
    Par anthyme dans le forum NetBeans
    Réponses: 2
    Dernier message: 05/07/2007, 09h26
  5. Réponses: 10
    Dernier message: 20/09/2006, 12h53

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