nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 2011
-
8 juin 2011 à 22:15
Masterweb95800
Messages postés10Date d'inscriptionlundi 26 mars 2007StatutMembreDernière intervention17 janvier 2011
-
3 juil. 2011 à 19:08
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Masterweb95800
Messages postés10Date d'inscriptionlundi 26 mars 2007StatutMembreDernière intervention17 janvier 2011 3 juil. 2011 à 19:08
Tu peux aussi utilisé le mot clé "dynamic" qui te donnera une et une seul fonction de Moyenne car une moyenne n'est rien de plus qu'une boulce ou tu additionne le tout puis divisant le tout par le nombre d'élément, il n'y a pas de problème de type.
Le mot clé "dynamic" est un équivalent au mot clé "var" à la différence près que "var" est évalué par Visual Studio afin de simplifié la rédaction de code et te permet d'avoir l’auto-complétion d'intelisense, hors "dynamic" sera évalué à l'exécution.
Mais pour une programmation rigoureuse , je te conseil en plus d'utiliser des "if(myojb is Int[])","if(myojb is Float[])", etc... pour vérifier que se sont bien des données numérique (entières ou réelles) qui te sont passé.
Celà te donne UNE seule fonction utilisable avec tout ce que tu veut! (exemple si tu surcharge les opérateurs "+" et "/" d'une classe personnelle, il te suffira de rajouter un condition de test "if(myobj is Myclass[])" etc... enfin quelque choses dans ce genre je te laisse voir la documentation sur le MSDN pour de plus ample informations.
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 10 juin 2011 à 13:00
NB : les templates ne fonctionne pas pour ce type d'exemple.
Exemple
T dTemp = 0;
Ne fonctionne pas car T doit etre un int dans ce cas !
Les templates c'est plus pour des classes que des type de base
dodo7263
Messages postés614Date d'inscriptionmercredi 10 septembre 2008StatutMembreDernière intervention 9 février 20176 10 juin 2011 à 11:58
Ah oui excellente idée. Ça va me permettre de voir les templates par la même occasion.
Je fais ça dès que j'ai un moment.
Merci pour la suggestion
@pluche
SD
kilvanox
Messages postés23Date d'inscriptionmardi 24 octobre 2006StatutMembreDernière intervention23 février 2011 10 juin 2011 à 11:32
Belel initiative, Mais je te conseillerai d'utiliser les templates pour les fonctions qui font le même traitement sur le même nombre de paramètres comme Moyenne par exemple.
@+
dodo7263
Messages postés614Date d'inscriptionmercredi 10 septembre 2008StatutMembreDernière intervention 9 février 20176 9 juin 2011 à 10:46
Ah d'accord. En fait c'est une de mes habitudes de programmation.
Ca me permet de voir dans mes sources quel type de données je gère.
Mais merci pour la remarque. Autant faire les choses de façon conventionnelle
@pluche
SD
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 9 juin 2011 à 00:12
C'est juste pour le nommage
iNbBarres --> nbBarre pas de i pour indiqué que c'est un entier, c'est pas dans les normes standard de codage
dodo7263
Messages postés614Date d'inscriptionmercredi 10 septembre 2008StatutMembreDernière intervention 9 février 20176 9 juin 2011 à 00:03
Salut,
Merci pour avoir pris le temps de parcourir cette source et d'avoir fait ces commentaires.
Sur certains points j'ai été un peu vite (plusieurs instructions, plusieurs return etc...).
En complément des tas de livres présent sur mon bureau, j'apprécie ton initiative. C'est comme ça que j'avancerais je pense.
Il y a un seul point de tes commentaires que je n'ai pas traité (car j'ai pas compris en fait !) c'est lorsque tu dis que les paramètres ne devraient pas mentionner leur type. Peut tu être plus clair sur ce point ?
Merci pour les 2 liens (dans mes favoris). ==> Je suis encore très loin de connaitre tout le framework .NET :-)
@pluche
SD
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 8 juin 2011 à 22:15
il y a pas besoin de passer le nombre en parametre la length peut le faire :-)
Plusieurs ptit commentaires pour améliorer ta source.
1 - La classe devrait etre static et sans constructeur
2 - Les methodes devrait commencer par une majuscule
3 - Les parametres ne devrait pas mentionnés leur type
... passe un coup de FxCop et Style Cop
Les try catch qui ne remonte pas l'erreur c'est mauvais
Les parametres de sortie devrait etre mentionnés par out
Un seul return par fonction si possible
Une seule instruction de code par ligne -- dCoeff1 dMatrice[0,3]; dCoeff2 dMatrice[1,3]; dCoeff3 = dMatrice[2,3]; --> pas facile a debugger
Dans EcartTypeResiduel il est conseillé de mettre le nom de la classe pour les appels des methodes statiques
MyMathUtils.EcartType
3 juil. 2011 à 19:08
Le mot clé "dynamic" est un équivalent au mot clé "var" à la différence près que "var" est évalué par Visual Studio afin de simplifié la rédaction de code et te permet d'avoir l’auto-complétion d'intelisense, hors "dynamic" sera évalué à l'exécution.
Mais pour une programmation rigoureuse , je te conseil en plus d'utiliser des "if(myojb is Int[])","if(myojb is Float[])", etc... pour vérifier que se sont bien des données numérique (entières ou réelles) qui te sont passé.
Celà te donne UNE seule fonction utilisable avec tout ce que tu veut! (exemple si tu surcharge les opérateurs "+" et "/" d'une classe personnelle, il te suffira de rajouter un condition de test "if(myobj is Myclass[])" etc... enfin quelque choses dans ce genre je te laisse voir la documentation sur le MSDN pour de plus ample informations.
dynamic :
http://msdn.microsoft.com/fr-fr/library/dd264741.aspx
var :
http://msdn.microsoft.com/fr-fr/library/bb383973.aspx
Sinon ça reste une source intéressante.
10 juin 2011 à 13:00
Exemple
T dTemp = 0;
Ne fonctionne pas car T doit etre un int dans ce cas !
Les templates c'est plus pour des classes que des type de base
10 juin 2011 à 11:58
Je fais ça dès que j'ai un moment.
Merci pour la suggestion
@pluche
SD
10 juin 2011 à 11:32
@+
9 juin 2011 à 10:46
Ca me permet de voir dans mes sources quel type de données je gère.
Mais merci pour la remarque. Autant faire les choses de façon conventionnelle
@pluche
SD
9 juin 2011 à 00:12
iNbBarres --> nbBarre pas de i pour indiqué que c'est un entier, c'est pas dans les normes standard de codage
9 juin 2011 à 00:03
Merci pour avoir pris le temps de parcourir cette source et d'avoir fait ces commentaires.
Sur certains points j'ai été un peu vite (plusieurs instructions, plusieurs return etc...).
En complément des tas de livres présent sur mon bureau, j'apprécie ton initiative. C'est comme ça que j'avancerais je pense.
Il y a un seul point de tes commentaires que je n'ai pas traité (car j'ai pas compris en fait !) c'est lorsque tu dis que les paramètres ne devraient pas mentionner leur type. Peut tu être plus clair sur ce point ?
Merci pour les 2 liens (dans mes favoris). ==> Je suis encore très loin de connaitre tout le framework .NET :-)
@pluche
SD
8 juin 2011 à 22:15
Ordonne tableau existe deja en mieux dans le framework
http://msdn.microsoft.com/en-US/library/system.array.sort%28v=VS.80%29.aspx
il y a pas besoin de passer le nombre en parametre la length peut le faire :-)
Plusieurs ptit commentaires pour améliorer ta source.
1 - La classe devrait etre static et sans constructeur
2 - Les methodes devrait commencer par une majuscule
3 - Les parametres ne devrait pas mentionnés leur type
... passe un coup de FxCop et Style Cop
Les try catch qui ne remonte pas l'erreur c'est mauvais
Les parametres de sortie devrait etre mentionnés par out
Un seul return par fonction si possible
Une seule instruction de code par ligne -- dCoeff1 dMatrice[0,3]; dCoeff2 dMatrice[1,3]; dCoeff3 = dMatrice[2,3]; --> pas facile a debugger
Dans EcartTypeResiduel il est conseillé de mettre le nom de la classe pour les appels des methodes statiques
MyMathUtils.EcartType
Pour les moyennes et les tris maintenant il y a linq ou les methodes d'extensions qui apporte des traitements
pour realiser ce que tu cherches
http://msdn.microsoft.com/en-us/library/bb298366.aspx