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 :

Les getter CS


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Points : 63
    Points
    63
    Par défaut Les getter CS
    pourquoi en cs on a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	    virtual public int Id
    		{get{return this.fiducial_id;}}
    au lieu d un getter classique ?

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Qu'est ce que tu appelles un getter classique ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    parce que écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    monObjet.Id = nouvelleValeur;
    recupereValeur = monObjet.Id;
    c'est plus sympa que d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    monObjet.SetId(nouvelleValeur);
    recupereValeur = monObjet.GetId();

    Il n'y a pas de différence dans le principe... Mais comme les "getter" et "setter", comme tu les appelles, sont des structures classiques qui permettent de gérer l'accès aux données, elles ont été intégrées dans C# de façon à être utilisées plus naturellement.
    C'est quand même plus sympa sous cette forme, non ?

  4. #4
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Points : 63
    Points
    63
    Par défaut
    c'est clair que c'est plus sympa, plus leger et plus parlant...
    et est ce aussi plus rapide ou a ce niveau il n'est pas question de grapiller du temps de calcul... je dis ca car la je suis en train d essayer de booster mon code...

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par sayag
    je dis ca car la je suis en train d essayer de booster mon code...
    Ce n'est pas dans cette direction qu'il te faut chercher alors
    Regarde plutot dans les accès aux ressources externes (fichiers, bases de données).
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    est ce aussi plus rapide ou a ce niveau il n'est pas question de grapiller du temps de calcul
    A mon avis c'est exactement pareil !
    A l'intérieur d'un get ou d'un set, on peut mettre un certain nombre d'instructions, pour faire un traitement des informations avant de renvoyer la bonne[*]. Le concept de "getter" ou de "setter" a tout simplement été intégrée à la syntaxe du C#, mais elle ne le rend ni plus ni moins efficace.
    Je *crois* même qu'au niveau du code intermédiaire généré lors de la compilation les propriétés sont transformées en méthodes "classiques" GetMachin et SetMachin.

    [*] (il est cependant fortement déconseillé d'y mettre des fonctions lourdes car l'utilisateur de ta classe s'attendra à un accès presque instantané ! pour tout traitement lourd, recourir aux bonnes vieilles méthodes GetLeTrucDifficileACalculer())

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Non, c'est juste une question de visibilité et de performance de maintenance....

    Ce n'est pas vraiment le langage qui boost le code, mais l'algo : notions très différentes
    Evidemment il est conseillé d'utiliser l'existant :
    la biblio Math,
    savoir utiliser les tableaux, colletions, generics et enumerator au bon moment
    (tit article sympa sur Collection et Enumerator):
    http://www.microsoft.com/france/msdn...llections.mspx

    éviter de bourrer le GC (éviter les new à répétition dans les boucles) très important! le vidage du GC est une opération très lente : dans les applis graphiques c'est le point sensible...
    éviter aussi les calculs à répétition (précalculer au maximum)

    Bien sur, bosser en code unsafe est plus dangereux, mais c'est la que tu gagnera le plus de temps.


    Après ya les pseudo ptits trucs du genre :
    préférer le for au foreach, et préférer le downtozero ( --i) au uptoX (++i)
    (détection de 0 toujours plus rapide : je suis resté longtemps sceptique, car une soustraction est plus longue qu'une addition, mais c'est vrai que la comparaison à zero a chaque cas ce fera plus vite qu'une comparaison entre deux entiers)
    A oui, il parait que ++i est mieux que i++ car il n'affectera pas de variable temporaire pour effectuer l'addition (tu gagnes un cycle^^)

    Enfin, rapelles toi que de toute façon comme tu es en dotNet, ces petits trucs là semble bien ridicule face au boulot de la machine virtuelle


    Enfin, avant de chercher a optimiser le code, optimises d'abord l'algo...

  8. #8
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Points : 63
    Points
    63
    Par défaut
    Merci pour les comm, j'essaye de faire le max sur l'algo et ca rentre petit a petit, je me repere meme plutot bien dans mes "raccourcis d algo", je veux dire quand l algo devint tellement lifté que tu le reconnait plus... mais bonje ne suis pas n pro de l algo non plus...

    Regarde plutot dans les accès aux ressources externes (fichiers, bases de données).
    ___________
    Comment vous faites ?


    En tous les cas merci beaucoup pour les conseils, je vais peut etre optimiser ca : http://hybe.fr/developpez/

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Les accès externes : c'est ce qui flingue n'importe quel bon algo de traitement qui suit...

    en gros toute tes entrées sorties sont des plaies, tous les accès disc dur sont une horreur.

    Si tu peux te permettre, tu précharge tout, sinon il faut bien définir à quel moment tu risques d'accèder a une ressource externe, sans devoir etre pris de court et mettre en pause le traitement...

    On dit qu'humainement, si Mr CPU, Mme MémoireCache, Mme RAM et MrDiscDuc discutent, ca donne un truc comme ça :
    Mr CPU pose une question a Mme MemoireCache : elle réponds en 1 sec
    Mr CPU pose une question à Mme RAM : elle réponds en 1 heure
    Mr CPU pose une question à Mr DiscDur : il lui faut.. 1 an...

    Ils doit bien exister des outils en c# pour tester la lenteur du code...
    Sinon tu fais ton bourrin, et tu enregistres les DateTime.now avant et après tes méthodes de traitements, puis tu trace les plus lentes...

  10. #10
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Points : 63
    Points
    63
    Par défaut
    ok merci je vais essayer ca.
    Sinon tout est préchargé, a priori.

  11. #11
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Points : 63
    Points
    63
    Par défaut
    A part des hasttable remplie par une instance de classe Client, que ma winForm relie 50 fois dans mon appli...
    Je devrais peut etre la lire une fois a l initialisation héhé

  12. #12
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Points : 63
    Points
    63
    Par défaut
    J'ai essayé de remplir un tableau des elements d une hashTable au lieu de consulter celle ci 100 fois dans mon programme.
    MAis du coup je consulte 100 fois le tableau.
    J y ai juste gagné de ne pas declarer 100 fois un nouvel enumerateur... est mieux ?

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

Discussions similaires

  1. Les Getters et Setters en Java
    Par faressam dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 18/04/2012, 16h40
  2. [Postsharp] Manager les getter et setter d'une propriété
    Par anthyme dans le forum Framework .NET
    Réponses: 4
    Dernier message: 13/01/2009, 11h19
  3. [DC] Mentionner les getters et les setters
    Par Stouille89 dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 02/11/2007, 15h08
  4. Utiliser les getters & setters en interne ?
    Par Sylver--- dans le forum Langage
    Réponses: 8
    Dernier message: 05/07/2007, 17h00
  5. [Info]générer automatiquement les getters / setters
    Par lr dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 01/02/2005, 10h14

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