#1 Le 05/08/2008, à 22:40
- dibat
discussion sur la présentation de code
Bonjour à tous,
dans le cadre de mon boulot je suis ammené à beaucoup scripter pour automatiser des tâches dans un environnement unix assez hétérogène (AIX, Tru64, Solaris....).
Je code essentiellement en perl (détail important pour la suite car c'est un langage réputé pour devenir vite illisible).
En discutant avec un collègue, j'en suis venu à me poser une question qui vous semblera peut-être ridicule mais qui peut prendre son importance quand on en arrive à écrire plus de 1000 lignes de code.
Pour moi, la convention veut qu'on utilise des fonctions et des procédures uniquement pour des partis du code qui seront utilisées plusieurs fois. Mon collègue lui, a une toute autre conception.
Il utilise les fonctions et les procédures pour découper son code de manière propre. au final un "main" de très peu de lignes et des fonctions à outrance. Au final c'est vrai que son code est clair.
Voilà, je me demandais comment vous, de votre côté, vous concevez vos scripts. Avez-vous des trucs à vous pour avoir un code clair et relisible par un autre ?
Hors ligne
#2 Le 05/08/2008, à 22:42
- SeTtHe
Re : discussion sur la présentation de code
??? y mettre beaucoup de commentaires, tout simplement ?
Hors ligne
#3 Le 05/08/2008, à 22:44
- wido
Re : discussion sur la présentation de code
je débute pour faire mes scripts , mais en regardant sur le net et sur ce forum ,j'ai appris pas mal de truc pour comprendre plus facilement un code, j'utilise le plus possible les fonctions et les commentaires c'est plus facile pour la relecture
Hors ligne
#4 Le 05/08/2008, à 22:48
- dibat
Re : discussion sur la présentation de code
@ Setthe
C'est une évidence.
Mais au delà des commentaires : quand il faut gérer énormement de cas sur un script en fonction des OS et autres facteurs on arrive vite a une usine à gaz...
@ wido
On apprend beaucoup sur le net. Moi j'ai beaucoup appris à l'école également et notamment à être rigoureux. Toi tu utilises les fonctions pour découper ton code ou pour le code qui est réutilisé plusieurs fois?
Dernière modification par dibat (Le 05/08/2008, à 22:49)
Hors ligne
#5 Le 05/08/2008, à 22:53
- wido
Re : discussion sur la présentation de code
quand j'utilise souvent la même portion de code , je fais appel à la fonction
Hors ligne
#6 Le 05/08/2008, à 22:53
- SeTtHe
Re : discussion sur la présentation de code
Perso, j'utilise les fonctions principalement quand un bout de code est utilisé plusieurs fois.
Par contre une suite d'instruction qui prend l'allure d'une usine à gaz peut effectivement être mise dans une fonction pour clarifier le code...
y-a-t-il une règle absolue ?
Hors ligne
#7 Le 06/08/2008, à 00:09
- nicolas66
Re : discussion sur la présentation de code
Il utilise les fonctions et les procédures pour découper son code de manière propre. au final un "main" de très peu de lignes et des fonctions à outrance.
Perso, c'est exactement ce que je fais. Au final, mon `main' ne dépasse pas 10 lignes.
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#8 Le 06/08/2008, à 00:50
- Yannick_LM
Re : discussion sur la présentation de code
J'ai eu un prof qui m'a appris deux trucs:
1. Éviter de faire des copier/coller de bouts de code : faites des fonctions !
2. Ne pas avoir de fonction qui prennent plus d'un écran
Je trouve le point 2. vachement important pour la relecture.
Si on y arrive pas, des commentaires du genre:
/**
* MAClasse::Machin fait:
* (1) des vérifications
* (2) appelle A::Bidule
* (3) appelle B::Chose si Bidule
* (4) Finit si C::Tagada est vrai
* @param : paramètres
* @returns: truc renvoyé par Machin
**/
MaClasse::Machin (paramètres)
{
//_____________
// (1)
<beaucoup de code>
//______________
// (2)
<encore du code>
//___________
// (3)
for (i in pouet)
{
<toujours du code>
} // fin de la boucle sur pouet
//________
// (4)
if ( condition)
{
...
}
else //! Condition est faux, donc on
{
....
} // Fin test condition
}
aident énormément à la relecture.
(Bon, j'ai mis une pseudo-syntaxe C++, mais l'idée est là)
<hs>
J'aime beaucoup les effets de style qu'on peut avoir avec les commentaires, en C++, pas vous ?
</hs>
EDIT:
Et puis, le mieux, c'est de te faire relire. C'est comme ça qu'on s'aperçoit qu'on ne mets jamais assez de commentaires
Dernière modification par Yannick_LM (Le 06/08/2008, à 00:59)
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne
#9 Le 06/08/2008, à 06:28
- nicolas66
Re : discussion sur la présentation de code
Je pense qu'un jour, il faut se fixer une bonne fois pour toutes des conventions de coding non-ambigües, lisibles et surtout logiques. Si le code est amené à être partagé, alors ces quelques lignes peuvent être un bon début :
* Pas de franglais
* Commenter son code
* Aérer son code (1 fois sur 2, je tombe sur du code de porc)
* Segmenter le code en fonctions -> une fois fonction a UNE seule tâche
* Donner des noms de variables clairs (pas genre tmpZ4e0fj45akm)
* Préférer les fonctions courtes (cf. Yannick_LM)
La règle d'or c'est de toujours essayer de se mettre à la place de la personne qui sera censée reprendre notre code. Tout ca demande un peu d'automastime et ca n'est pas la fac qui me l'a appris.
Note 1 - `GNU indent' permet de mettre en forme du code C. Le support du C++ est expérimental pour le moment.
Note 2 - Echelle de Goret
"Yeah, we can do it !", militons pour un code plus propre
Dernière modification par nicolas66 (Le 06/08/2008, à 06:35)
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#10 Le 06/08/2008, à 09:41
- SeTtHe
Re : discussion sur la présentation de code
La règle d'or c'est de toujours essayer de se mettre à la place de la personne qui sera censée reprendre notre code
+1
Hors ligne
#11 Le 10/08/2008, à 22:18
- thy
Re : discussion sur la présentation de code
je crois que l'essentiel a été dit
avoir des conventions d'indentation aide aussi la relecture
tu peux definir un mode d'indentation dans ton editeur / ide
et le partager avec tes collègues.
Hors ligne
#12 Le 11/08/2008, à 07:28
- robrob
Re : discussion sur la présentation de code
<hs>
J'aime beaucoup les effets de style qu'on peut avoir avec les commentaires, en C++, pas vous ?
</hs>
Ce n'est pas lié au C++ (tu peux faire la même chose avec presque n'importe quel langage), mais à ton éditeur de texte qui "comprend" ce type de commentaire.
Le gros intérêt de ce type de commentaire est de permettre ensuite la génération d'une documentation avec des outils comme doxygene.
Hors ligne
#13 Le 11/08/2008, à 07:54
- Nemingway
Re : discussion sur la présentation de code
L'essentiel à été dit; en c/c++ j'utilise souvent l'instruction inline pour éclaircir le code.
Moi aussi j'aime commenter avec style
Hors ligne
#14 Le 11/08/2008, à 08:26
- nicolas66
Re : discussion sur la présentation de code
A mon avis, le mot-clé inline faut pas trop en abuser dans certains cas
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#15 Le 11/08/2008, à 19:30
- thy
Re : discussion sur la présentation de code
A mon avis, le mot-clé inline faut pas trop en abuser
dans certains cas hmm
d'après moi, il faut l'utiliser seulement si on veut
faire de l'optimisation, cela permet de garder un découpage
claire en plusieurs fonctions tout en gardant un code rapide
Mais il faut avoir a l'esprit que chaque appel a la fonction inliné
sera remplacé par le corps de la fonction, et que du coup le binaire
produit sera plus gros.
Hors ligne
#16 Le 11/08/2008, à 19:49
- nicolas66
Re : discussion sur la présentation de code
Mais il faut avoir a l'esprit que chaque appel a la fonction inliné
sera remplacé par le corps de la fonction, et que du coup le binaire
produit sera plus gros.
Exactement
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#17 Le 07/09/2008, à 16:37
- Yannick_LM
Re : discussion sur la présentation de code
Tiens, au passage, j'ai pris aujourd'hui une bonne résolution:
écrire les commentaires AVANT le code.
C'est vachement mieux, je vous le recommande
Trucs et astuces pour Vim
Ma web page avec des trucs dessus ...
Hors ligne