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 :

Question sur bonne pratique


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Question sur bonne pratique
    Bonjour,

    j'aimerais savoir si le fait de mettre plusieurs return dans une méthode était une bonne pratique en programmation ou pas si ca permet d'économiser des lignes.

    Voici un exemple de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public bool supprimerBranchement (int numero) {
       Branchement lesBranchements = new Branchement();
       try {
          this.lesBranchements.RemoveAt(numero);
          return true;
       }
       catch (Exception) {
          return false;
       }

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 180
    Points : 4 493
    Points
    4 493
    Par défaut
    Citation Envoyé par TotoDev59 Voir le message
    Bonjour,
    j'aimerais savoir si le fait de mettre plusieurs return dans une méthode était une bonne pratique en programmation ou pas si ca permet d'économiser des lignes.
    Non le but n'est pas de faire le programme le plus court, part contre si ca facilite la lisibilité oui


    (dans ce cas ca ne me choque pas)

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Points : 359
    Points
    359
    Par défaut
    Personnellement avoir plusieurs return dans une fonction ce n'est pas grave. Par contre, si tu as la main sur la class "Branchement", j'aurai pas fait ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public bool supprimerBranchement (int numero) {
       //Branchement lesBranchements = new Branchement(); // Je suppose que cette ligne est à titre informatif pour notre compréhension et non dans ton code à ce niveau. Car sinon tu ne pourra pas faire le "this."
         return this.lesBranchements.RemoveAt(numero);
    }
    Et tu délègue à ta fonction RemoveAt le soins de retourner True si c'est remove sinon false.
    Car le test via un Try Catch par contre n'est pas une bonne pratique. En faite il faut tester si la valeur existe, avec un bon block IF

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    La bonne pratique est de ne pas utiliser les exceptions comme une mesure de succès.

    Premièrement, même si aucune exception n'est générée, peut-être qu'aucun fichier n'a été effacé.

    Un exemple de code compact qui prend avantage de la valeur de retour du nombre de fichiers affectés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return new MyEntity(myID).Delete() == numberOfExpectedDeletedRecords;
    Si une exception survient, laisse la responsabilité au module client de la gérer de de modifier son comportement en conséquence.

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    le fait de mettre plusieurs return dans une méthode est-il une bonne pratique en programmation ou pas
    Il y a 20 ans nos méthodes de développement avaient été audités et l'une des critiques de cet audit était qu'il y avait parfois plusieurs return dans les fonctions.

    Depuis, nous avons toujours mis un return unique en fin de procedure et l'expérience nous a montré qu'il s'agissait effectivement d'une bonne pratique.
    En complément, nous nommons systématiquement "Result" la variable utilisée dans l'instruction return en fin de procedure.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public bool supprimerBranchement (int numero)
    {    
         bool Result = false ;
         Branchement lesBranchements = new Branchement();    
         try { this.lesBranchements.RemoveAt(numero); Result=true ; } 
         catch (Exception) { Result = false; }
         return Result ;
    }

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 180
    Points : 4 493
    Points
    4 493
    Par défaut
    bon je ne parlerais pas de ce cas-ci mais plutot dans la généralité.

    Avoir un return -1 au debut de la fonction ne me choque pas.
    Avoir un return element quand on le trouve ne me choque pas non plus.

    Perso je préfere avoir plusieurs return dans une fonction que de devoir réfléchir où va le programme en suite
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(paramNonOk) return -1;
    code
    return retVal;
    me semble plus lisible que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(paramNonOk) 
    {
        retVal =-1;
    }
    else 
    {
        code... 
    }
    return retVal;
    ca fait une indentation pour rien , je dois verifier si il n'y a rien après le else même si l'ide aide à voir les les block {}

Discussions similaires

  1. questions de bonne pratique
    Par Bobette dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 29/03/2012, 16h34
  2. Question générale sur les bonnes pratiques avec Java
    Par Teovald dans le forum Langage
    Réponses: 8
    Dernier message: 15/03/2011, 17h32
  3. Réponses: 2
    Dernier message: 18/06/2010, 19h12
  4. [1.x] Question de bonnes pratiques : plusieurs petits modules
    Par AoSiX dans le forum Symfony
    Réponses: 8
    Dernier message: 04/05/2010, 21h16
  5. Petite question de bonne pratique pour débutant :)
    Par nabodix dans le forum Débuter
    Réponses: 4
    Dernier message: 04/02/2009, 12h58

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