OVH Cloud OVH Cloud

Accolades : conventions d'ecriture

113 réponses
Avatar
Fabien LE LEZ
Bonjour,

J'écris systématiquement l'accolade ouvrante et l'accolade fermante
sur une même colonne :

if (condition)
{
action;
}

Cette convention d'écriture me permet de voir immédiatement la
structure en blocs, d'autant que la plupart des éditeurs ont une
couleur spéciale pour les accolades.

Aussi ai-je énormément de mal à lire du code écrit avec l'autre type
de convention :

if (condition) {
action;
}

J'aimerais savoir si les gens qui ont l'habitude des deux conventions,
arrivent à lire aussi facilement la deuxième que la première. Et,
accessoirement, s'il existe des éditeurs capables de mettre les deux
éléments de même "niveau" (i.e. "if (condition) {" et "}") de la même
couleur.

Merci d'avance...

10 réponses

1 2 3 4 5
Avatar
Fabien LE LEZ
On Fri, 11 Jun 2004 00:37:17 -0400, "Michel Michaud"
wrote:

Entre autres, tu verras que les
instructions ne sont pas toujours au même endroit, si tu ne mets
pas de bloc lorsqu'il n'y a qu'une instruction.


Je me suis très vite aperçu que ne pas mettre d'accolades quand un
bloc ne contient qu'une seule instruction, était rarement une bonne
idée.



--
;-)
FLL, Epagneul Breton

Avatar
Pierre Maurette
Loïc Joly typa:
[...]
Il y a un "effet secondaire" à cette variabilité de l'indentation, qui me
sert bien souvent : lorsque que je reprends le programme d'un autre, en
général, je commence par le réindenter "à ma sauce", à la main... Ça me
permet de survoler le code en repérant les tests et autres boucles, de
cerner sa structure, tout en le rendant plus lisible pour moi car, oui, la
force de l'habitude est importante à ce niveau-là !


Et si tu faisait ça chez moi, je t'en voudrais.

Déjà il y a le problèmes des règles de codage qui ne seraient alors plus
respectées, mais en plus et surtout, il y a le fait que toutes ces
modifications qui ne servent à rien cacheraient celles qui servent à
quelquechose, par exemple quand on fait un diff entre deux version du
fichier, rendant le code bien moins maintenable.
Effectivement, ça vous met en l'air un beau gestionnaire

historique/différences. Il y a une solution : un reformatage
automatique paramétrable puissant. Il suffit de toujours reformater
(dans le format commun s'il y a lieu) avant sauvegarde, ainsi que le
tampon avant comparaison. Chaque développeur peut travailler avec ses
préférences. Mon IDE fait très bien tout ça. Ce qu'il ne fait pas mais
qui serait facile à ajouter, c'est la fonction "différences
intelligentes" (il suffirait de chercher les différences à partir de
copies temporaires reformatées).
--
Pierre


Avatar
drkm
"Michel Michaud" writes:

Dans news:, Fabien LE

On Wed, 09 Jun 2004 19:50:54 +0200, drkm
wrote:

Je suppose qu'il s'agit d'une histoire de compacité du code.
Ma console est en 35x80


Je n'ai que 27 lignes "utiles" pour le code, mais comme
généralement, je lis le code à la roulette (de la souris), ça
ne me dérange pas trop qu'un bloc soit très long :-)


Un bloc de 27 lignes EST TROP LONG (sauf dans des cas très
précis, comme un long switch ou une série de if équivalente).


Un bloc de définition de fonction ?

--drkm



Avatar
drkm
Fabien LE LEZ writes:

On Thu, 10 Jun 2004 21:59:36 +0200, "Yalbrieux"
wrote:

J'utilise donc
if( ...) {
....
}


Question subsidiaire : comment se présente ce genre d'écriture quand
la condition ne tient pas sur une ligne ?


Mal, je trouve. C'est le seul point négatif que je rencontre de
temps en temps. Il m'arrive de temps en temps de passer l'accolade
ouvrante sur la ligne suivante. Un manque de cohérence, peut-être,
pour certains cas où cela rend le code plus lisible (bien que le
manque de cohérence lui-même obfusque peut-être le code ...).

--drkm


Avatar
PurL
Je me suis très vite aperçu que ne pas mettre d'accolades quand un
bloc ne contient qu'une seule instruction, était rarement une bonne
idée.


Niveau lisibilité ?
ou à d'autres niveaux ?

PurL

Avatar
PurL
if (condition)
{
action;
}

if (condition) {
action;
}



Moi je considère que les accolades font parti du if comme si l'accolade
ouvrante indiquait le "begin du if" (et non pas du bloc) et l'accolade
fermante le "end du if" :

if (condition)
{
action;
}

Apparement, personne ne fait comme cela mais je trouve qu'on repere plus
vite le code du if en défilant rapidement le code.
C'est comme les fonctions, je fais :

void mafonc()
{
code;
}

si je suis votre logique, pour une fonction vous faites ceci :

void mafonc()
{
code;
}

autant pour le if je pourrais m'y faire, mais pour une fonction je ne trouve
pas ca jolie...

PurL

Avatar
Richard Delorme
On Thu, 10 Jun 2004 21:59:36 +0200, "Yalbrieux"
wrote:


J'utilise donc
if( ...) {
....
}



Question subsidiaire : comment se présente ce genre d'écriture quand
la condition ne tient pas sur une ligne ?


Normalement comme cela :

if (unePremiereTropLongueCondition
|| uneDeuxiemeTropLongueCondition
|| uneTroisiemeTropLongueCondition) {
expression1;
expression2;
}

Où est le problème ?

--
Richard


Avatar
Fabien LE LEZ
On Fri, 11 Jun 2004 09:20:42 +0200, "PurL"
wrote:

Je me suis très vite aperçu que ne pas mettre d'accolades quand un
bloc ne contient qu'une seule instruction, était rarement une bonne
idée.


Niveau lisibilité ?


Lisibilité (et consistance, qui va avec) et extensibilité.

--
;-)
FLL, Epagneul Breton


Avatar
Jean-Marc Bourguet
Fabien LE LEZ writes:

On Thu, 10 Jun 2004 21:59:36 +0200, "Yalbrieux"
wrote:

J'utilise donc
if( ...) {
....
}


Question subsidiaire : comment se présente ce genre d'écriture quand
la condition ne tient pas sur une ligne ?


J'ai tendance (*) a passer de

if (...) {
}

a

if (...)
{
}

a

if (cond1
&& cond2
&& (cond3
|| cond4))
{

* Pour les projets ou les conventions de codage demandent la premiere
forme mais ne specifient pas ce qu'il faut faire quand les lignes sont
trop grandes.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org


Avatar
Fabien LE LEZ
On Fri, 11 Jun 2004 09:26:56 +0200, "PurL"
wrote:

if (condition)
{
action;
}

Apparement, personne ne fait comme cela


D'après la doc de "Artistic Style", ta méthode est nommée "ansi",
tandis que la mienne est nommée "gnu". Donc les deux sont
raisonnablement communes.

si je suis votre logique, pour une fonction vous faites ceci :

void mafonc()
{
code;
}


Je devrais faire :

void mafonc()
{
code;
}

Mais je ne le fais pas -- sans vraiment savoir pourquoi, et en ayant
conscience que c'est inconsistant.

Je crois que je mettrai un peu d'ordre dans mes conventions
personnelles... quand je serai au pied du mur ;-)


--
;-)
FLL, Epagneul Breton

1 2 3 4 5