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 :

Optimisation du code


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut Optimisation du code
    Salut à tous

    Je voudrais savoir s'Il y a moyen d'optimiser ce code afin qu'il soit plus court.

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    private void btnModifier_Click(object sender, EventArgs e)
            {
     
                if (btnModifier.Text == "Modifier")
                {
                    parAncien = construireParameter();
     
                    edit();
                    txtDomain.Focus();
                    btnAjouter.Enabled = false;
                    button3.Enabled = false;
                    button4.Enabled = false;
                    button5.Enabled = false;
                    button6.Enabled = false;
                    btnModifier.Text = "Sauvegarder";
                }
                else
                {
                    par = construireParameter();
     
     
                    if(parAncien.Equals(par))
                        memeValeur = true;
     
                    else if (gp.parametreDifferent(par))
                    {
                        gp.updateParameter(parAncien,par);
                        MessageBox.Show("Modification effectue avec succes");
                        btnModifier.Text = "Modifier";
                    }
                    else
                    {
                        MessageBox.Show("ERREUR");
                    }
                    if (memeValeur == true)
                    {
                        MessageBox.Show("Aucune modification apporte");
                    }
     
                }
            }

  2. #2
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonjour.

    Déjà, une simplification possible, supprimer "memeValeur" et afficher directement la MessageBox.

    Chaîner les assignations "false" : button3.Enabled = bounton4.Enabled = ... = false; Ca ne change rien au code généré mais la source sera plus courte.

    Supprimer des if avec des returns : "if (x) { y() } else { z() }" est parfois remplaçable par "if (x) { y(); return; } z(); ".

  3. #3
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    En plus de ce qui a été dis, une optimisation à faire est de supprimer les duplications (principes DRY don't repeat yourself(ne te répète pas))

    Par exemple, construireParameter est appelée dans tous les cas donc ne l'appelle qu'une fois.

    Ensuite tu pourrais ne pas mélanger français/anglais au moins dans un même nom (comme dans construireParameter :-) )

    Les constantes genre "Modifier", "Sauvegarder" devrait être des constantes ou readonly de ta classe pour éviter à terme de se répéter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     
    const string MODIFIER = "Modifier";
    const string SAUVEGARDER ="Sauvegarder";
     
    private void btnModifier_Click(object sender, EventArgs e)
            {
               var CurrentPar = BuildParameter();
                if (btnModifier.Text == MODIFIER)
                {
                    parAncien = CurrentPar ;
     
                    edit();
                    txtDomain.Focus();
                    btnAjouter.Enabled  = button3.Enabled =  button4.Enabled =    button5.Enabled =  button6.Enabled = false;
                    btnModifier.Text = SAUVEGARDER;
                }
                else
                {
                    par = CurrentPar ;                
     
                    if(parAncien.Equals(par))
                         MessageBox.Show("Aucune modification apporte");
     
                    else if (gp.parametreDifferent(par))
                    {
                        gp.updateParameter(parAncien,par);
                        MessageBox.Show("Modification effectue avec succes");
                        btnModifier.Text = MODIFIER;
                    }
                    else
                    {
                        MessageBox.Show("ERREUR");
                    }
     
                }
            }

  4. #4
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Tu peux aussi faire des .Equals pour la comparaison de tes chaines de caractères.
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(MODIFIER.Equals(btnModifier.Text)) {
    ...
    }

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut
    Merci de vos commentaires

    C'est avec l'appuit d'expert qu'on apprend à mieux travailler !!!

  6. #6
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Juste pour faire le mec chiant, optimiser du code ce n'est pas ça.
    Là on va parler de formatage de code source.

    Optimiser ça concernerait plutôt un problème d'efficacité, de performances, d'utilisation de mémoire, consommation de cycles processeurs, etc..., et au niveau du bite code généré.

    Par ailleurs, une amélioration pourrait consister à utiliser des fichiers de ressources pour gérer les champs textes que tu affiches

  7. #7
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut
    Encore une fois les amis, je fais du code redondant.

    Une solution pour ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    public DataSet searchParameter(Parameter par)
            {
                int nbParam = 0;
                String sRequete;
     
                sRequete = "SELECT DOMAIN_ID, SUB_DOMAIN_ID,CODE,VAL1,VAL2,VAL3,VAL4,VAL5,VAL6 FROM APPLICATION_PARAMETER_EXT";
                if (par.DomainID != "Select an item" )
                {
                    sRequete += " WHERE DOMAIN_ID like '" + par.DomainID + "'";
                    nbParam++;
                }
                if (par.SubDomainID != "Select an item")
                {
                    if (nbParam == 0)
                        sRequete += " WHERE";
                    else
                        sRequete += " AND";
                    sRequete += " SUB_DOMAIN_ID like '" + par.SubDomainID + "'";
                    nbParam++;
                }
                if (par.Code != "Select an item")
                {
                    if (nbParam == 0)
                        sRequete += " WHERE";
                    else
                        sRequete += " AND";
                    sRequete += " CODE like '" + par.Code + "'";
                }
                if (par.Description != "")
                {
                    if (nbParam == 0)
                        sRequete += " WHERE";
                    else
                        sRequete += " AND";
                    sRequete += " upper(DESCRIPTION) like upper('%" + par.Description + "%')";
     
                }
                ds = db.ExecuteReader(sRequete);
                return ds;
            }
     
            public DataSet searchParameter2(Parameter par)
            {
                int nbParam = 0;
                String sRequete;
     
                sRequete = "SELECT description FROM APPLICATION_PARAMETER_EXT";
                if (par.DomainID != "Select an item")
                {
                    sRequete += " WHERE DOMAIN_ID like '" + par.DomainID + "'";
                    nbParam++;
                }
                if (par.SubDomainID != "Select an item")
                {
                    if (nbParam == 0)
                        sRequete += " WHERE";
                    else
                        sRequete += " AND";
                    sRequete += " SUB_DOMAIN_ID like '" + par.SubDomainID + "'";
                    nbParam++;
                }
                if (par.Code != "Select an item")
                {
                    if (nbParam == 0)
                        sRequete += " WHERE";
                    else
                        sRequete += " AND";
                    sRequete += " CODE like '" + par.Code + "'";
                }
                if (par.Description != "")
                {
                    if (nbParam == 0)
                        sRequete += " WHERE";
                    else
                        sRequete += " AND";
                    sRequete += " upper(DESCRIPTION) like upper('%" + par.Description + "%')";
     
                }
                ds = db.ExecuteReader(sRequete);
                return ds;
            }
    Ça fait la même chose sauf pas la même requête....

    Pour est-ce je fais cela ? C'est ici, quand je crée mon datagridView, il ne faut pas j'aille le même tableau...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      private void button1_Click(object sender, EventArgs e)
            {
                par = construireParameter();
                DataSet ds = gp.searchParameter(par);
                DataSet ds2 = gp.searchParameter2(par);
                dataGridView1.DataSource = ds.Tables[0];
                dataGridView2.DataSource = ds2.Tables[0];
            }
    Il faudrait que je réussisse à choisir les colonnes en créant mon dataGridview je crois, mais je n'Ai pas trouvé la solution..

Discussions similaires

  1. optimiser le code d'une fonction
    Par yanis97 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 08h41
  2. Optimiser mon code ASP/HTML
    Par ahage4x4 dans le forum ASP
    Réponses: 7
    Dernier message: 30/05/2005, 10h29
  3. optimiser le code
    Par bibi2607 dans le forum ASP
    Réponses: 3
    Dernier message: 03/02/2005, 14h30
  4. syntaxe et optimisation de codes
    Par elitol dans le forum Langage SQL
    Réponses: 18
    Dernier message: 12/08/2004, 11h54
  5. optimisation du code et var globales
    Par tigrou2405 dans le forum ASP
    Réponses: 2
    Dernier message: 23/01/2004, 10h59

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