PETITE LIBRAIRIE MATHÉMATIQUE

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 8 juin 2011 à 22:15
Masterweb95800 Messages postés 10 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 17 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.

https://codes-sources.commentcamarche.net/source/53261-petite-librairie-mathematique

Masterweb95800 Messages postés 10 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 17 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.

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.
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
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és 614 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 9 février 2017 6
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és 23 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 23 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és 614 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 9 février 2017 6
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és 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
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és 614 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 9 février 2017 6
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és 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
8 juin 2011 à 22:15
Salut,
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