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

Avatar
Mickael Pointier
Bonsoir Fabien,

En ce qui me concerne je privilégie la compacité et la vision du bloc
en un coup d'oeil.
J'utilise donc
if( ...) {
....
}


Ce que je n'aime pas avec le fait que les deux accolades ne soient pas sur
la même colonne, c'est que ca rend inutile la fonction que j'utilise dans
mon éditeur, qui me montre la "matching parenthesis". Je sais que si c'est
sur la même colonne, c'es que je n'ai pas d'inconsistance au niveau des
imbrications.


Voire : if(..) {...} // lorsque c'est court

Les lignes blanches me montrent immédiatement les pavés logiques et la
maintenance en est plus facile à mon goût.


Ce que je n'aime pas avec le code conditionné sur la même ligne que le if,
c'est que dans la majorité des IDE que j'utilise, il n'est pas possible de
positionner un point d'arrêt sur le code en question.

Donc bein au final moi ce que j'utilise c'est ca:

if ()
{
//...
}

mais ceci ne me gêne pas non plus:

if ()
{
//...
}

Quand aux tabs, ici on utilise des tabs=4, ce qui donne je trouve un bon
compromis lisibilité place.

Au final, ce qui compte c'est que le style soit consistant au niveau du
projet, le reste ca n'est que du détail.

Mike

Avatar
Fabien LE LEZ
On Fri, 11 Jun 2004 09:44:48 +0200, "Mickael Pointier"
wrote:

Ce que je n'aime pas avec le fait que les deux accolades ne soient pas sur
la même colonne, c'est que ca rend inutile la fonction que j'utilise dans
mon éditeur, qui me montre la "matching parenthesis".


Je n'ai pas cette fonctionnalité dans mon éditeur (je crois), par
contre je l'ai dans l'oeil.


--
;-)
FLL, Epagneul Breton

Avatar
Jean-Marc Bourguet
"Mickael Pointier" writes:

Bonsoir Fabien,

En ce qui me concerne je privilégie la compacité et la vision du bloc
en un coup d'oeil.
J'utilise donc
if( ...) {
....
}


Ce que je n'aime pas avec le fait que les deux accolades ne soient pas sur
la même colonne, c'est que ca rend inutile la fonction que j'utilise dans
mon éditeur, qui me montre la "matching parenthesis". Je sais que si c'est
sur la même colonne, c'es que je n'ai pas d'inconsistance au niveau des
imbrications.


Euh, cette fonction chez moi sert justement a voir que les parentheses
et les accolades se correspondent bien comme je le pense, qu'elles
soient alignees ou pas.

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
BlueR

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;
}


Je suis aussi cette disposition, et éventuellement s'il y a plus de 3-4
blocs imbriqués et que je commence à y voir moins clair je rajoute un
commentaire sur l'accolade fermante.

if (condition)
{
code.....
while (condition)
{
code.......

} //while
} // if


--
BlueR

Avatar
kanze
Fabien LE LEZ wrote in message
news:...
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 :-)


Moi, j'utilise une police assez petite pour me permettre deux fenêtres
de 60/70x80. Mais quand même -- c'est pour avoir la définition de la
classe, les declarations des interfaces dont je me sers, etc., ainsi
qu'un shell. La taille moyen d'une fonction, c'est moins d'une dizaine
de lignes de code, quand même. Alors, même avec les accolades sur des
lignes à part, et un écran 24x80, la fonction entière tient dans un
écran.


Il ne faut pas exagérer, quand même.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
kanze
Fabien LE LEZ wrote in message
news:...
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 ?


Historiquement, j'indente au niveau des parenthèses, principalement
parce que c'est ce que emacs fait automatiquement. Depuis peu, je
travaille surtout avec vim, et j'indente deux niveaux, c-à-d :

if ( condition 1
&& condition 2 ) {
code régi par la condition ...
}

Dans l'ensemble, ça me plaît mieux, mais il va falloir du temps avant
que tout mon code soit conforme.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
Alain Naigeon
"Fabien LE LEZ" a écrit dans le message news:

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 ?


Une condition longuette, c'est du bon style ? On peut la raccourcir
avec des appels de fonctions, des typedef, etc.

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France


Avatar
Alain Naigeon
"Fabien LE LEZ" a écrit dans le message news:

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.


Moi aussi ! Evidemment on a tous oublié un jour d'ajouter les
accolades lorsqu'il a fallu écrire une deuxième instruction.

(pour la même raison, je mets toujours un break théoriquement
superflu à la fin de mes case).

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France




--
;-)
FLL, Epagneul Breton



Avatar
Michel Michaud
Dans news:, Fabien LE
On Fri, 11 Jun 2004 00:38:43 -0400, "Michel Michaud"
wrote:

Un bloc de 27 lignes EST TROP LONG


Même quand la moitié des lignes sont soit des lignes entièrement
blanches, soit ne contiennent qu'une accolade ?


Si tu mets des accolades inutilement et si tu mets beaucoup de
lignes vides, disons que je change mon affirmation pour « Un bloc
de 27 lignes est probablement trop long ». :-)

Evidemment, en écrivant le code comme ça :

for (int i=0; i<10; ++i) {
int j= f(i);
if (j>i)
--j;
else
++j;
cout << j;
}

27 lignes, ça fait beaucoup. Mais quand je tape :

for (int i=0; i<10; ++i)
{
int j= f(i);

if (j>i)
{
--j;
}
else
{
++j;
}

cout << j;
}

il suffit que la boucle soit un tantinet plus compliquée, et on
arrive vite à une bonne vingtaine de lignes...


Le code que tu as écrit contient un bloc de 14 lignes. On est
loin du compte. Trouve un vrai exemple de 27 lignes ou plus et
on pourra discuter !

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
Michel Michaud
Dans news:, Fabien LE
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.


Dans certains cas, mettre des accolades inutilement n'est pas une
bonne idée (on discute dans le vague là hein !).

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/