PRODUIT MATRICIEL ORDINAIRE

Cyberboy2054 Messages postés 173 Date d'inscription jeudi 20 décembre 2001 Statut Membre Dernière intervention 22 août 2008 - 16 déc. 2009 à 18:56
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 17 déc. 2009 à 10:00
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/50981-produit-matriciel-ordinaire

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
17 déc. 2009 à 10:00
J'ai moi aussi beaucoup ri face à ce code.
Les noms de variable sont horribles ! Normalement, un commentaire est là pour expliquer comment se servir d'une fonction. Un nom "explicite" ne dispense généralement pas de ceci. Tu n'es pas le premier à avoir eu cette fausse bonne idée. Sur le net, il y a un site qui regroupe les pires choses vus en matière de code, et ceci a déjà été décrit:
http://thedailywtf.com/Articles/CodeThatDocumentsItselfSoWellItDoesNotNeedComments.aspx

Un nom de variable/fonction doit être concis, le commentaire étant là pour donner des explications supplémentaires.
On va prendre un exemple:

void saisie_matrice(string nom_de_la_matrice , int nb_de_ligne , int nb_de_colonne , double **matrice , bool question_afficher_information_sur_mode_d_affichage__1_pour_oui_ou_0_pour_non).

Réécrit avec concision, et commenté en Doxygen (renseigne toi dessus, c'est très pratique, il peut générer un pdf de documentation à partir de tes commentaires, avec des schémas).

/*!
** Permet de saisir la matrice
**
** @param nom: Le nom de la matrice
** @param nbLigne: Le nombre de ligne de la matrice
** @param nbColonne: Le nombre de colonne de la matrice
** @param matrice: La matrice
** @param modeAffichage: Affiche des informations sur le mode d'affichage (1 pour activer, 0 pour désactiver)
**
*/
void saisie_matrice(string nom, int nbLigne , int nbColonne , double **matrice, bool modeAffichage).

Au niveau du code, tu utilises du C++ comme du C, c'est un peu dommage. Une classe Matrice avec une redéfinition d'opérateur aurait été largement la bienvenue.

Le mélange printf / std::cout c'est très moche. Tu sais que std::cout peut très bien formater la sortie ? (Regarde les iomanip).

Le niveau "initié" n'est pas justifié. Il n'y a rien de compliqué. Le niveau "débutant" est plus approprié.
Utilisateur anonyme
16 déc. 2009 à 22:55
*sent, *courts, *côté (il manque un système de réédition des commentaires pour corriger ses fautes).
Utilisateur anonyme
16 déc. 2009 à 20:45
@Cyberboy: "Bonjour"? merci pour ton commentaire. En ce qui concerne le nom des variables j'estime que chacun fait comme il le sens. En général j'en met des cours, mais comme je publie sur un site...et ce n'est pas un pb sur le long terme dans la mesure où le copier-coller et autocompletion existe (moi je m'en sert, et oui). De plus, cela me dispense de mettre des commentaires à côter. Et comme par exemple "chiffre_devant_etre_inferieur_a_dix" peut être >=10 avant de passer dans la boucle de division, le terme "unites" ne correspond pas. Chacun fait comme il le sens alors rigole tout seul :)
En ce qui concerne la structure matrice j'en mettrait éventuellement une, mais ce n'est pas ça qui va alléger le code.
Cyberboy2054 Messages postés 173 Date d'inscription jeudi 20 décembre 2001 Statut Membre Dernière intervention 22 août 2008
16 déc. 2009 à 18:56
J'ai beaucoup ri devant les noms de variables, le "demande_et_restrictions_du_nombre_de_ligne_ou_de_colonne_d_une_matrice" m'a tuer.
Ceux que tu choisis sont explicites, c'est bien, mais sur le long terme, il est preferable d'avoir des noms de variables courts.
"chiffre_devant_etre_inferieur_a_dix", c'est long, "unites" est tout aussi parlant est bien moins long à taper (oui autocompletion blablah, tout le monde ne s'en sert pas), et au passage dans ce cas la c'est plus explicite :)
Tu peux virer tout les "le" "de" "du", et tout ce qui n'apporte rien à la compréhension de l'utilité de la variable: nb_de_ligne_de_la_matrice_A -> nb_lignes_A voire nb_lignes_mat_A si t'as peur de ne pas être explicite.
Ensuite tu aurais pu créer une structure matrice avec les champs essentiels (taille, données, et nom ici), ca aurait pas mal allégé le code.
Rejoignez-nous