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

VB.NET Discussion :

Comment Eviter au mieux les GoTo ?


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 147
    Par défaut Comment Eviter au mieux les GoTo ?
    Bonjour,

    J'ai consulté plusieurs tuto pour remplacer les Goto et cela semble devenir complexe à la relecture du code et peu clair pour s'y retrouver.

    Comment vous articuleriez votre Code pour éviter les goto, par exemple dans le cas suivant où il y aurait un tas de test de saisies:

    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
     
    Private button1_click ........................
    If NOM.Text = "" Then
    	MsgBox("ERREUR sur le NOM")
    	goto fin
    End If
    If PRENOM.Text = "" Then
    	MsgBox("ERREUR sur le PRENOM")
    	goto fin
    End If
    If ADRESSE.Text = "" Then
    	Msgbox("ERREUR sur l'ADRESSE")
    	goto fin
    End If
    '--------------------------- Sauvegarde -------------------------------------------
    .........
    .........
    .........
    '----------------------- Fin de Sauvegarde ---------------------------------------
    fin:
    end sub
    Le but est d'obtenir un Code sans goto; bien sûr; mais aussi qu'il soit facilement consultable pour modifs.

    Merci de vos aides à tous.

    Cordialement.

  2. #2
    Membre chevronné Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 339
    Par défaut
    Salut,
    Dans ton cas il suffit juste de :

    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
    Private button1_click 
    If NOM.Text = "" Then
        MsgBox("ERREUR sur le NOM")
        Exit Sub
    End If
    If PRENOM.Text = "" Then
        MsgBox("ERREUR sur le PRENOM")
        Exit Sub
    End If
    If ADRESSE.Text = "" Then
        Msgbox("ERREUR sur l'ADRESSE")
        Exit sub
    End If
    '--------------------------- Sauvegarde -------------------------------------------
    '...
    '----------------------- Fin de Sauvegarde ---------------------------------------
    End sub

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 147
    Par défaut re
    ok, je me compliquais l'existance avec des case, loop, etc !!

    merci

  4. #4
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    Quand un goto passe dans les parages c'est extrêmement dangereux,il faut prononcer un Vade Retro Satanas ,se signer et avoir toujours sa cotte de maille bardée de return (semblable à exit sub) et ses variantes exit for, exit while...

  5. #5
    Invité
    Invité(e)
    Par défaut
    bonjour,

    désolé je pensai que nous étions en Vb.Net!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Private Sub button1_click()
            Dim msg As String = ""
            If NOM.Text = "" Then msg = msg + "ERREUR sur le NOM" +  Environment.NewLine
            If PRENOM.Text = "" Then msg = msg + "ERREUR sur le PRENOM" +  Environment.NewLine
            If ADRESSE.Text = "" Then msg = msg = msg + "ERREUR sur l'ADRESSE" +  Environment.NewLine
            If msg <> "" Then MessageBox.Show(msg, "Erreur de saisie", MessageBoxButtons.OK, MessageBoxIcon.Error) : Return
        End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub button1_click()
           Try
                If NOM.Text = "" Then Throw New NotImplementedException("ERREUR sur le NOM")
                If PRENOM.Text = "" Then Throw New NotImplementedException("ERREUR sur le PRENOM")
                If ADRESSE.Text = "" Then Throw New NotImplementedException("ERREUR sur l'ADRESSE")
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Erreur de saisie", MessageBoxButtons.OK, MessageBoxIcon.Error) : Return
            End Try
     
     
        End Sub

    Nom : Sans titre.png
Affichages : 248
Taille : 14,9 Ko
    Dernière modification par Invité ; 28/09/2017 à 12h55.

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 147
    Par défaut ok merci
    Ok Merci pour les Infos


  7. #7
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Plutôt que des Exit Sub et autres Return placés n'importe où (super simple la gestion des objets disposables dans ce cas) je préfère ici utiliser ElseIf à la place des Else suivi de If

    => Ainsi dès que le programme entre dans une condition, il n'entre pas dans les suivantes.

    Ensuite, la sauvegarde doit être conditionnée par un booléen qui aura été mis par défaut à "true" et passe à "false" si on entre dans un des cas d'erreur.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    personnellement je préfère ma première proposition qui informe l'utilisateur sur tous le manques et pas m’arrêter au premier manque!

    de toutes les façon ta proposition passera dans tous les ElseIf si tous les textbox sont renseigné!

  9. #9
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 147
    Par défaut re
    le problème est différent si l'on veut un message différent selon les manques !!!

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par didpoy Voir le message
    le problème est différent si l'on veut un message différent selon les manques !!!
    ce que je voulais dire c'est que de toutes les façon on parcourra tous les ElseIf si tous les textBox sons renseignés, ce qui revient à une cascade de if! si nous voulons optimiser le code c'est pas ici ou on gagnera du temps!

    de plus ma première proposition donne un message différent selon les manquants mais l'utilisateur est informé de tout ce qui ne vas pas!

    la deuxième génère une exception si manquant Catch ex As Exception informe l’utilisateur! les if successifs ou ElseIf dans ce cas là c'est la même chose!

    Édité: Je rappel que l'idée ici est que tous les texbox soient renseignés, donc statistique nous n'avons à faire qu'a une succession de if!
    Indépendamment que les.elsif complique la maintenance curative et évolutive!
    Dernière modification par Invité ; 01/10/2017 à 15h33.

Discussions similaires

  1. Besoin petite aide pour association
    Par ptityop dans le forum Autres
    Réponses: 0
    Dernier message: 09/10/2007, 16h23
  2. besoin d aide sur un exercice sur les pointeurs
    Par azumachakib69 dans le forum C
    Réponses: 3
    Dernier message: 28/12/2006, 01h16
  3. [DataWareHouse] Comment définir au mieux les clés ?
    Par Melvine dans le forum Alimentation
    Réponses: 12
    Dernier message: 05/05/2006, 02h15
  4. Besoin d'aide pour un exercice sur les registres
    Par zakuza dans le forum Assembleur
    Réponses: 5
    Dernier message: 14/04/2006, 14h23

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