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 :

[VB.Net] Quels conseils pour une programmation stylée ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Par défaut [VB.Net] Quels conseils pour une programmation stylée ?
    Bonjour à tous,

    j'ai développé une classe Polynôme.
    J'aimerais avoir vos avis sur cette classe, ce que vous pensez du style de programmation, des tests sur les références null (car j'ai un peu de mal comment les utiliser efficacement, des exceptions, des asserts etc.
    Pourriez-vous me donner de précieux de conseils que je puisse améliorer mon code ?

    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    using System;
    using System.Collections.Generic;
    using System.Text;
     
    namespace MyLibrary.Mathematic
    {
      class Polynome
      {
        /// <summary>
        /// Coefficients du polynôme
        /// </summary>
        private double[] m_Coefficient = null;
        public double[] Coefficient
        {
          get { return m_Coefficient; }
          set 
          {
             if (m_Coefficient != value)
              m_Coefficient = value;
          }
        }
     
        /// <summary>
        /// Constructeur
        /// </summary>
        /// <param name="ordre"></param>
        public Polynome(uint ordre)
        {            
           System.Diagnostics.Debug.Assert((ordre > 0 ), "L'ordre"
            + " doit être supérieur à 0");
           if (ordre >0)
           {
              double[] coeff = new double[ordre+1];
              m_Coefficient = coeff;
           }
           else throw new ArgumentException("L'ordre doit être supérieur à 0");
        }
     
        /// <summary>
        /// Constructeur
        /// </summary>
        /// <param name="coeff"></param>
        public Polynome(double[] coeff)
        {
           System.Diagnostics.Debug.Assert((coeff !=null), "La référence"
            + " du coefficient est nulle");
           if (coeff != null)
              m_Coefficient = coeff;
           else throw new ArgumentException("Le paramètre n'est pas valide");
         }
     
         /// <summary>
         /// Calcul d'une valeur à partir du polynôme
         /// </summary>
         /// <param name="value"></param>
         /// <returns></returns>
         public double CalculValueFromPoly(double valueOfX)
         {
            double varTemp = 0;
     
            for (int i = 0; i < m_Coefficient.Length; i++)
            {
               varTemp += m_Coefficient[i]*System.Math.Pow(valueOfX,i);
            }
            return varTemp;
         }
     
         /// <summary>
         /// Retourne la formule
         /// </summary>
         /// <returns></returns>
         public override String ToString()
         {
            return ConstructFormule(m_Coefficient); ;
         }
     
         /// <summary>
         /// Construction de la formule
         /// </summary>
         /// <returns>Formule</returns>
         private string ConstructFormule(double[] coeff)
         {
            System.Diagnostics.Debug.Assert(coeff != null, "Les"
             + " coefficients sont nuls");
            if (coeff != null)
            {
              string formule = "";
              for (int i = 0; i < coeff.Length; i++)
              {
                 if (i != 0)
                   formule = " + " + formule;
                 formule = coeff[i].ToString() + "X^" + i.ToString() + formule;
               }
               return formule;
            }
            else return null;
          }
       }
    }
    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Personnellement je ne trouve pas grand chose à dire sur ta maniere de coder cette classe.

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Pas mal sauf pour la dernière méthode: elle doit renvoyé une String mais dans le cas où coeff == null, tu renvoies null, ce qui n'est pas très logique.....
    Renvoit String.Empty (par exemple) à la place, ce sera mieux

  4. #4
    Membre éclairé
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Par défaut
    Je ne connaissais pas.
    Merci.

    Pas mal
    Personnellement je ne trouve pas grand chose à dire sur ta maniere de coder cette classe
    Ah ouais ? C'est cool ça.

    Même les assert ? Ca ne fait pas trop ?
    Et j'ai raison de lancer des ArgumentException ?
    Est-ce que ce type d'exception doit être lancé dès qu'un argument n'est pas valable ?

    Et supposons qu'une opération doit être fait tel qu'une division.
    Vaut-il mieux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int a=0;
    int b=5;
    int c=0;
    if (a!=0)
        c=b/a;
    ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int a=0;
    int b=5;
    int c=0;
    try {
        c=b/a;
    }
    catch (DivideByZeroException ex) {
    }
    Merci.

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par Pilloutou
    Est-ce que ce type d'exception doit être lancé dès qu'un argument n'est pas valable ?
    Pour cela, il suffit de regarder la doc (MSDN), c'est le mieux

  6. #6
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Attention Pilloutou, pour la gestion des exceptions, saches que tu peux te contenter de mettre certains bloc de ton code un try/catch qui te pemrettront simplement de récupérer l'exception levée nativement par le framework, par exemple la Classe DivideByZeroException existe et est déjà prévu par le framework sur certaines opérations mathématiques donc tu peux te contenter de gérer l'exception au plus haut niveau de ton code pour l'interface utilisateur notamment (l'exception est propagée par defaut.
    Pour ce qui est des Debug.Assert, je pense que c'est plutôt à destination des developpeurs qui auront à utiliser tes classes mais ce n'est pas forcement necessaire sauf pour toi-même pendant le stade du developpement du soft
    En gros tant que le framework a déjà une implémentation d'exceptino sur tes opérations tu peux laisser l'exception se propager jusqu'où c'est necessaire, sans quoi effectivement tu peux developper tes propres classes d'exceptions spécifiques qui hériteront d'Exception ou de ses dérivés selon l'explicitation nécessaires.

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

Discussions similaires

  1. quelques conseils pour une application web vb.net
    Par Gr@nd@x dans le forum VB.NET
    Réponses: 1
    Dernier message: 20/11/2008, 19h34
  2. [Conseil] Quel langage pour une petite appli. serveur ?
    Par hm@rch@1 dans le forum Windows
    Réponses: 0
    Dernier message: 29/07/2007, 09h40
  3. Quel ETL est à me conseiller pour une migration de bases ?
    Par Arvulis dans le forum Alimentation
    Réponses: 10
    Dernier message: 27/10/2006, 15h39
  4. Réponses: 4
    Dernier message: 06/03/2006, 17h54
  5. [Systeme d'Information] Quels conseils pour une refonte ?
    Par jejefeds dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 07/12/2005, 18h23

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