Salut la foule, c'est vendredi : c'est permis !
Je bosse dans le domaine du web : je crée des applications mais j'en intègre aussi. Lorsque je crée une application, je pense, en codant, au pauvre gus qui risque d'aller voir le code pour modifier l'appli. Pour que ce pauvre gus s'y retrouve, je place en en-tête quelques commentaires décrivant le "but" du script, si ce script dépend d'autres scripts (et lesquels) ainsi que la liste des fonctions/classes qu'il définit et la version minimale pour laquelle ce script est créé (pour php). Dans le code, à chaque action faite, à chaque ligne presque, je place un commentaire qui explique comment fonctionne la fonction, pourquoi je fais faire telle ou telle chose... ainsi, si quelqu'un va voir le code, il saura à quoi il sert...
Depuis quelques jours, j'intègre wordpress-mu à un environnement existant (ayant son propre mode d'authentification, par exemple) et pour se faire, je suis obligé de reprendre chaque étape de chaque action, de noter sur un papier la liste d'appels de fonctions, les noms de variables, la liste des dépendances... et c'est usant...
aucun commentaire dans le code sauf "// TODO : must translate this string" (super utile hein ?) ou "get_footer(); // get the footer" (tout aussi utile) ou encore (mon préféré) "// this is ugly !"
Mon coup de gueule : ok il ya une doc (très incomplète) ok la version MU est jeune mais quand même... ça serait quand même bien plus simple de commenter le code non ? C'est bien d'ouvrir un code et de vouloir que la communauté soit active dans le projet, mais, à mon sens, libérer du code ça passe aussi par donner les moyens aux autres de le modifier "simplement" sans qu'ils aient à chercher pendant des heures à quoi sert telle ou telle fonction apparemment cruciale...
Est-ce que j'en demande trop ?
# u r not alone
Posté par jemore . Évalué à 10.
>ça serait quand même bien plus simple de commenter le code non ?
oui
>Est-ce que j'en demande trop ?
non.
Je me demande si la différence entre les developpements perso et les dev professionnels n'est pas là...
[^] # Re: u r not alone
Posté par oops (site web personnel) . Évalué à 10.
Tu te trompes.
[^] # Re: u r not alone
Posté par Dring . Évalué à 10.
Et du coup, quelqu'un qui commente mal chez lui, commente également mal dans son boulot. En général.
Parce que le commentaire, ça doit venir avant le code, ou à la rigueur en même temps. Si tu te dis : ça je le ferais plus tard, tu es déjà sur une pente glissante. Et surtout, tu multiplies le temps nécessaire, car quand tu reviens sur ton code 1 semaine ou 1 mois plus tard, c'est bien plus dur de le commenter.
"Mais pourquoi j'ai écrit ça ?" "Bordel, ça correspond à quelle spec ?". Et j'en passe et des meilleures.
Et c'est pas valable qu'en informatique...
[^] # Re: u r not alone
Posté par dmg . Évalué à 10.
Alors, s'il vous plaît, gardez du travail pour les informaticiens, ne commentez pas vos codes !
-- Qui aime bien, troll bien.
[^] # Re: u r not alone
Posté par iznogoud . Évalué à 7.
-- quitte à troller, autant aller jusqu'au bout.
[^] # Re: u r not alone
Posté par qstone . Évalué à 3.
-- le troll est mon ami. J'ai pas honte de mes amis.
[^] # Re: u r not alone
Posté par Yth (Mastodon) . Évalué à 10.
J'ai même tendance à mieux commenter encore quand c'est pour moi, parce que j'ai le temps, pas de deadline pourrie et de trucs à rendre vite fait mal fait pour avant-hier.
Yth.
[^] # Re: u r not alone
Posté par Anonyme . Évalué à 10.
Heu non, pas trop. C'est quand meme étonnant de voir le nombre de gens qui pensent que les gens dans les entreprises codent proprement :)
[^] # Re: u r not alone
Posté par briaeros007 . Évalué à 6.
Impératifs qu'a beaucoup moins le logiciel libre.
[^] # Re: u r not alone
Posté par gst . Évalué à 5.
Je rajouterais, de plus, qu'ils sont certainement d'autant plus sales que ceux qui les écrivent savent pertinament bien que leur code ne sera jamais ou presque jamais relu/revu. (si ce n'est éventuellement par eux-mêmes et encore..).
C'est triste, mais c'est comme ça.
[^] # Suivant le projet tu documentes ou pas,
Posté par Samaty Tramo . Évalué à 3.
Généralement quand il s'aperçoit que tu commentes il te donne autre chose d'urgent, mais il te rappellera que tu ne commentes pas ton code le jour ou il en aura besoin.
Sans compter, les projets qui commencent sans réelle cahier des charges mais qui doivent être fini pour hier.
Et au moment ou tu leur montres ce qu'ils t'ont demandé, là tout est à refaire (y compris ta doc) car par le truchement de ton commercial qui est en contact avec LE cadre de la boite de vendeur de (Chausssures|Parfumerie|Pistolets|...) le projet ne répond plus à ce que pensais le cahier des charges qui était dans la tête de ce cadre mais qu'il ne t'as pas dit car sinon c'est pas assez sportif comme métier informaticien. Mais bon si ce cadre savait informatiquement parlant ce qu'il voulait tu n'aurait plus de métier.
Dans l'exemple type, une fois, j'ai commencé par un simple ftp avec gestion des droits sur fichiers en http pour finir par un workflow complet entièrement recomposable.
Sur ce genre de projet tu comprends que documenter complètement en codant peut te faire perdre du temps.
D'ailleurs je vous signale, au passage, que le w3 essaye de mettre une norme pour les workflows des services webs après oasis et le workflow group.
Bien sur je ne parle même pas des deadlines assassinent qui dynamiteront les élans lyriques.
# commenter le code?
Posté par ecyrbe . Évalué à 10.
Par contre, commenter le code, je fait, pas! je donne toujours des noms très explicites à mes fonctions et variables pour pas avoir à le faire, surtout si j'ai déjà expliqué dans la description de la fonction le principe de son fonctionnement.
Je trouve que commenter le code, ça reviens à dire qu'on a pondu du mauvais code, car pas compréhensible, donc qu'il faut corriger... En plus ça embrouille la lisibilité du code.
Voilà ce que j'en pense...
[^] # Re: commenter le code?
Posté par jeffcom . Évalué à 3.
en ce qui concerne non ça revient à dire "je te donne un max d'infos pour pas que t'ai à te creuser la tête. Mais bien entendu si je mets un truc style
"function affiche_heure() {
echo time();
}"
vais pas commenter hein... je commente ce qui pourrait être obscur ou mal compris du premier coup...
enfin ça on peut s'en arranger, on peut faire 2 versions : une commentée et l'autre pas ça permet d'avoir une sorte de doc si besoin, on peut aussi (lorsque c'est possible) faire des tabulations, perso je fais en sorte que les commentaires sortent de la limite des 80 caractères avec des tabs, ainsi les coms ne gênent pas le code...
[^] # Re: commenter le code?
Posté par ecyrbe . Évalué à 2.
Voilà dejà une difference sur ma façon de programmer et la tienne.
Si j'estime qu'une partie du code pourrait être obscure ou mal comprise, je factorise et ajoute une nouvelle fonction implémentant cette partie avec un nom explicite et une description doxygen de la fonction... ça donne un code plus propre, plus lisible, plus conci, avec une description là ou elle doit être...
c'est pas plus simple?
[^] # Re: commenter le code?
Posté par Matthieu Moy (site web personnel) . Évalué à 9.
Et effectivement, le code avec un commentaire par ligne, soit c'est dans un tutorial, soit c'est une connerie ;-).
[^] # Re: commenter le code?
Posté par gnumdk (site web personnel) . Évalué à 7.
Ca dépend du code en question. Sur un algo bien complexe, c'est pas en le factorisant que tu vas le rendre plus compréhensible, d'ailleurs, c'est souvent mission impossible de factoriser la chose en laissant un truc propre...
J'ai bossé y'a pas très longtemps sur l'algo de placement intelligent de Kwin pour le porter sous Compiz, ce que j'ai pu remarquer:
- Le début du code commence par un commentaire expliquant l'historique de l'algo, mais rien n'expliquant son fonctionnement...
- Des commentaires dans le code qui après étude permettent de comprendre ce qu'il se passe.
Donc, je pense que commenter une fonction et commenter son code sont deux choses qui s'entrecoupent. Si t'as l'un et pas l'autre, mais t'es un peu plus avancé mais pas trop.
Bien, sur, cela ne sert à rien de commenter du code qui se lit de par lui meme ;)
[^] # Re: commenter le code?
Posté par Matthieu Moy (site web personnel) . Évalué à 2.
/*
1. faire ci
2. faire ça
3. encore un truc
*/
Puis des /* 1. */, /* 2. */, ... qui se balladent dans le code après. Ceci-dit, faut faire gaffe à pas utiliser ça pour se rassurer, dans bien des cas, il aurait fallu découper ça en fonctions ...
[^] # Re: commenter le code?
Posté par alexissoft . Évalué à 2.
Bilan, tout réécrit (en bcp bcp mieux bien sûr), commenté, avec beaucoup de commentaires, et maintenant je comprend pourquoi je met telle valeur dans tel registre, etc...
[^] # Re: commenter le code?
Posté par totof2000 . Évalué à 4.
Parfois, dans un souci d'optimisation de performances, il arrive de devoir développer des bouts de code pas propre ou obscur d'un point de vue algorithmique.
[^] # Re: commenter le code?
Posté par z a . Évalué à 4.
[^] # Re: commenter le code?
Posté par Dring . Évalué à 10.
[^] # Re: commenter le code?
Posté par Piour (site web personnel) . Évalué à 3.
[^] # Re: commenter le code?
Posté par le99 . Évalué à 2.
[^] # Re: commenter le code?
Posté par iznogoud . Évalué à 2.
fopen();
fclose();
puis il aurait rempli :
fopen();
while(! eof()) {
//blabla
next();
}
fclose();
et ensuite tu remplaces le //blabla par ce que tu veux faire de tes lignes. Donc, il n'aurait pas oublié le fclose :)
(enfin, j'espère pour lui)
On va dire que je suis assez adepte du code qui se documente par lui même (un minimum) : bien choisir ses variables, bien choisir où sauter des lignes, indenter correctement. Bien choisir ses règles de développement et s'y tenir.
Et bien commenter ce qui n'est pas trivial, en essayant de se mettre à la place d'un autre.
L'idéal est ce que j'ai eu l'occasion de faire dans un boulot précédent : j'avais écrit une application (en perl), et c'est une autre personne qui l'a relue. Ca m'a permis de voir où étaient vraiment les points "durs". Parce que quand on est plongé dans son code pendant 5 mois d'affilé, il devient "facile à lire" et compréhensible/trivial pour soi, mais ce n'est pas forcément le cas pour les autres.
[^] # Re: commenter le code?
Posté par jeffcom . Évalué à 1.
je disais ça pour un cas extrême qui nécessite cela (un algo pas évident à comprendre du premier coup, ou pour les appels de variables. exemples :
en début de fichier :
et/ou pour une fonction :
et, bien entendu, mettre tout ça à jour si modifié
[^] # Re: commenter le code?
Posté par Croconux . Évalué à 4.
Je met en général peu d'explications dans le code. Lorsque je met des commentaires, c'est pour expliquer ce qui semble non naturel (workaround pour un problème connu, etc) ou que quelqu'un pourrait prendre pour un bug/oubli/boulette alors que c'est voulu. Ca ne dispense pas de faire de la doc en particulier sur l'architecture et les choix effectués mais la place de ce type d'info n'est pas dans le code. Quelqu'un qui cherche à comprendre l'architecture du logiciel ne devrait pas avoir à aller fouiller dans les fichiers pour avoir une vue d'ensemble et savoir dans quelle partie du code il doit intervenir.
# Ascii art en commentaire dans les sources
Posté par eastwind☯ . Évalué à 2.
sinon il y a boxes http://boxes.thomasjensen.com/ , qui permet de dessiner des boites de commentaires et de les enelver dans pas mal de language ..
Pourquoi on ne joindrait pas l'utile a l'agréable en mettant de l'ascii art en forme de schéma dans les commentaires du codes ??
(je parles pas de ces trucs du genre international offuscation code competition ) .
[^] # Re: Ascii art en commentaire dans les sources
Posté par Dring . Évalué à 5.
[^] # Re: Ascii art en commentaire dans les sources
Posté par Anonyme . Évalué à 3.
Ca apporte aussi des commentaires qui ne correspondent plus à ce que fait la fonction, par ce que la dernière personne qui a modifié à eu la flemme de mettre à jour le commentaire.
Sinon, ne surtout pas oublier non plus les commentaires qui repetent les noms de fonctions, les paramètres et autres infos inutiles. Exemple :
[^] # Re: Ascii art en commentaire dans les sources
Posté par ecyrbe . Évalué à 7.
par rapport à quoi? boxes? ils n'ont pas le même but, l'un est un gadget, l'autre est un outils de génération de documentation de code.
Un avantage, de doxygen, c'est qu'il comprend plusieurs syntaxes pour pouvoir s'adapter à plusieurs langages de programmation. ce qui en fait un outils unifié si jamais tu dois mixer plusieurs langages dans un projet...
Ensuite plusieurs autres systèmes comprennent les tags de doxygen qui est devenu plus ou moins un standard, et qui lui même à repris les tags de javadoc et en a ajouté d'autres.
# vendredi powered
Posté par snt . Évalué à 5.
>sur un papier la liste d'appels de fonctions, les noms de variables, la
>liste des dépendances... et c'est usant
C'est à dire qu'avec un langage évolué et un ide récent, c'est le genre de truc qui est fait par la machine et pas par l'homme : c'est plus rapide, c'est toujours à jour et ça permet de consacrer son temps à des trucs plus interressants.
[^] # Re: vendredi powered
Posté par chl (site web personnel) . Évalué à 2.
genre ?
[^] # Re: vendredi powered
Posté par snt . Évalué à 4.
VB.Net et Visual Studio.
gniark.
[^] # Re: vendredi powered
Posté par z a . Évalué à 1.
[^] # Re: vendredi powered
Posté par Julien Laumonier (site web personnel) . Évalué à 10.
[^] # Re: vendredi powered
Posté par Yth (Mastodon) . Évalué à 8.
Il répondra même aux questions. En soixante-sept langues, trente-quatre dialectes, quarante-sept idiomes, et deux-cent-trente-huit variantes locales ou argotiques.
Yth.
[^] # Re: vendredi powered
Posté par Anonyme . Évalué à 4.
[^] # Re: vendredi powered
Posté par jeffcom . Évalué à 1.
en mod_python ? (moins de pb en python évidement)
en javascript ?
en tal ?
et quand bien même... c'est chiant de devoir en arriver là non ?
# Ça pourrait être pire ..
Posté par Colin Pitrat (site web personnel) . Évalué à 5.
Moi par exemple, cette semaine, je dois utiliser une bibliothèque Java qui m'est fournie dans une application que je développe. Évidemment, je n'ai pas accès au code, j'ai juste le droit à une javadoc, et un fichier au format Microsoft Word qui décrit le bouzin. Première bonne surprise, le fichier en question contient un schéma d'architecture plutôt léger et visiblement faux, deux trois paragraphes probablement écrits par quelqu'un qui n'a pas participé au codage de la bibliothèque (et sans doute avant qu'elle existe) et plusieurs page de description de l'API qui ressemble à la javadoc, mais en moins complet.
La javadoc, doxygen et leurs copains, c'est bien à condition que l'on décrive un minimum les API. Hors la je n'ai que des choses du genre :
et bien souvent avec des noms moins explicites.
Finalement, pour comprendre quelque chose, et pour vérifier mes suppositions, j'ai décompilé le code. Ce n'est pas parfait, mais ça aide bien ! Une chance qu'ils n'aient pas pensé à l'obfusquer.
[^] # Re: Ça pourrait être pire ..
Posté par Dring . Évalué à 1.
La doc : un gros PDF qui ressemble à de la javadoc mais qui n'en n'est pas - et ça se voit, c'est pas à jour. Quand je demande la javadoc, on me dit "oui oui", mais ça ne vient jamais.
Je me dis que je vais la générer moi-même en décompilant la lib, mais pas de chance, elle est obfusquée. Du coup, lorsque je croise des bugs, la pile d'appel n'apporte aucune information utile que je puisse transmettre à leur support...
Et comme il n'ont pas respecté les conventions java (les méthodes commencent par une majuscule, les paramètres par des "p", etc.), la complétion ne marche plus dès que je tape le premier caractère d'une méthode (sauf si je pense à la taper en majuscule bien sûr).
Ils ont développé leur propre mini-framework de logging qui est compatible avec rien, et d'ailleurs ils ne l'utilisent pas toujours, ça va des fois directement dans SystemOut.
Que du bonheur...
Et il y en a encore : un système de licence contraignant et inutile, un "bugzilla" antédilluvien et bien sûr maison, une compatibilité avec uniquement certaines versions de JVM (java 1.4 maxi), etc.
[^] # Re: Ça pourrait être pire ..
Posté par Wawet76 . Évalué à 1.
Tu perds entre autre les commentaires... mais comme dit un peu partout ici, ils sont rarement intéressants de toute façon.
[^] # Re: Ça pourrait être pire ..
Posté par Wawet76 . Évalué à 7.
# if (i = 0) // je vérifie que i est égal à 0
Posté par bertrand . Évalué à 6.
Notons par ailleurs qu'aucun compilateur (de ma connaissance) ne vérifie que les commentaires sont exacte. J'en ai vu de nombreux qui décrivait autre chose que le code correspondant. (cf le titre)
J'en ai déduit qu'on doit trouver en commentaire la fonction d'un programme/fonction, la description de ses paramètres et valeurs de retour, des exceptions, bugs et limites. Eventuellement une référence à l'algorithme utilisé si c'est pas évident.
MAIS surtout JAMAIS de description du code.
Si c'est bien codé, c'est lisible.
[^] # Re: if (i = 0) // je vérifie que i est égal à 0
Posté par rdg . Évalué à 1.
Cette erreur là est tout simplement horrible, je veux même plus penser au nombre d'heure que j'ai perdu à cause d'arnaque comme celle la...
[^] # Re: if (i = 0) // je vérifie que i est égal à 0
Posté par briaeros007 . Évalué à 3.
il t'avertis sur ca quand meme ;)
[^] # Re: if (i = 0) // je vérifie que i est égal à 0
Posté par Nicolas Schoonbroodt . Évalué à 5.
[^] # Re: if (i = 0) // je vérifie que i est égal à 0
Posté par M . Évalué à 2.
Pas vraiment :
essaye un if ( (i =0) || uneautrecond() )
Aucun warning ...
[^] # Re: if (i = 0) // je vérifie que i est égal à 0
Posté par Rin Jin (site web personnel) . Évalué à 1.
Ceci étant, Warning ou pas, j'évite ce genre de cocktail, je trouve ça un peu lourd à la relecture, j'ai toujours tendance à y voir une erreur lors d'une lecture un peu rapide.
[^] # Re: if (i = 0) // je vérifie que i est égal à 0
Posté par CrEv (site web personnel) . Évalué à 5.
if (0 = i)
De cette manière il n'y a aucune chance que ça passe quelque soit le compilateur
# No comments !
Posté par Grumbl . Évalué à 4.
Il existe des IDEs qui se démerdent avec le code qu'on leur vomit pour faire la moitié de ce que tu demandes.
# Faites du Lisp
Posté par Xavier Maillard . Évalué à 5.
[^] # Re: Faites du OCAML
Posté par Grumbl . Évalué à 1.
[^] # Re: Faites du Lisp
Posté par Gniarf . Évalué à 2.
ah zut, c'était pour http://linuxfr.org/~Val1472/24745.html
# Moi ce que je fais ...
Posté par chack . Évalué à 4.
un .h un .c et un .d pour "documentation" qui a le même principe que
les .c sauf qu'au lieu d'implémenter les prototypes il explique les spécifications, raison d'être de la fonction et quelques petits exemples.
Comme ça quand je navigue dans le .c j'ai pas des millions de commentaires qui embrouillent le bazar, et quand je veux savoir ce que fait une fonction, je dois pas bouger jusqu'a sa définition.
Bon maintenant il me reste à faire un plugin vim qui va chercher automatiquement la doc de la fonction et ça sera le pied.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.