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

8 9 10 11 12
Avatar
Fabien LE LEZ
On Mon, 14 Jun 2004 15:41:23 +0200, "Mickael Pointier"
:

je ne supporte pas les ";"


Ben... dans un langage aussi complexe que le C++, il faut un caractère
spécial pour séparer les instructions, sinon le pov' compilateur
aurait bien du mal à s'y retrouver. Ça ne peut pas être l'espace (ou
assimilé -- n, t, ...), vu qu'il sert déjà à autre chose (séparer
les mots). Quelle autre solution proposes-tu ?

est-ce que ca serait si terrible que ca d'avoir:

for (
while (
if (
endif
endwhile
endfor


Pour moi, oui : je considère que le if() ne fait pas partie du bloc
d'instructions qui le suit.

Dit autrement, il n'y a pas besoin de "endif", parce que l'instruction
qui le suit immédiatement est la seule concernée :

if (machin)
truc;
else
bidule;

Evidemment, tu peux remplacer "truc;" par un bloc de plusieurs
instructions, mais ça ne concerne plus le "if".



--
schtroumpf schtroumpf

Avatar
James Kanze
Fabien LE LEZ writes:

|> On 14 Jun 2004 10:30:01 +0200, Jean-Marc Bourguet :

|> >Qqun avait edite le fichier avec des TAB a 4 et qq d'autre a 8...

|> M'étant fait avoir une ou deux fois, j'ai réglé tous mes éditeurs
|> pour ne pas utiliser le caractère "TAB", et insérer les espaces qui
|> vont bien à la place, quand je tape TAB ou quand ça indente
|> automatiquement.

Le problème, ce n'est pas quand moi, j'édite le fichier. (Comme toi,
j'évite les tabs.) Le problème c'est quand c'est les autres.

--
James Kanze
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
James Kanze
Gabriel Dos Reis writes:

|> James Kanze writes:

|> | Gabriel Dos Reis writes:

|> | |> James Kanze writes:

|> | |> | BlueR writes:

|> | |> | |> 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.

|> | |> | S'il y a 3 ou 4 blocs imbriqués, la fonction est trop compliquée.

|> | |> Je suppose que tu as laissé tomber l'utilisation des classes
|> | |> locales ? ;-)

|> | Pas le choix. Les auteurs de la norme à décider qu'elles ne
|> | marchent pas complètement. (Neuf fois sur dix, quand je veux une
|> | classe locale, c'est pour instantier un template.)

|> Mais et avant ?

Et avant ? Je n'avais pas tant de classes locales que ça. En général,
les seuls cas auxquels je me souviens d'avoir utiliser une classe
locale, c'est quand c'était pour ainsi dire la seule chose dans la
fonction. C-à-d des fonctions usine, dont la seule instruction était
« return new ClasseLocale ; ». Et avec une classe qui ne dépassait pas
une dizaine de lignes.

--
James Kanze
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
Jean-Noël Mégoz
"Fabien LE LEZ" a écrit dans le message de
news:
On Mon, 14 Jun 2004 15:41:23 +0200, "Mickael Pointier"
:

Pour moi, oui : je considère que le if() ne fait pas partie du bloc
d'instructions qui le suit.

Dit autrement, il n'y a pas besoin de "endif", parce que l'instruction
qui le suit immédiatement est la seule concernée :

if (machin)
truc;
else
bidule;

Evidemment, tu peux remplacer "truc;" par un bloc de plusieurs
instructions, mais ça ne concerne plus le "if".



Tout à fait. En fait, je me dis qu'il faut voir les 'if' et autres 'while'
ou 'for' comme des sortes de fonctions locales, dont les arguments sont
la/les condition(s) entre parenthèses, et le corps, le bloc d'instructions
qui suit. D'ailleurs, je ne mets jamais d'espace après le if :
if(condition)
{
machin;
}
Cette façon de voir vient peut-être d'une longue habitude du C, où tout est
fonction...

Avatar
drkm
"Jean-Noël Mégoz" writes:

Cette façon de voir vient peut-être d'une longue habitude du C, où tout est
fonction...


C, langage fonctionnel ?-)

--drkm

Avatar
Pierre Maurette
James Kanze typa:

Fabien LE LEZ writes:

|> On 14 Jun 2004 10:30:01 +0200, Jean-Marc Bourguet :

|> >Qqun avait edite le fichier avec des TAB a 4 et qq d'autre a 8...

|> M'étant fait avoir une ou deux fois, j'ai réglé tous mes éditeurs
|> pour ne pas utiliser le caractère "TAB", et insérer les espaces qui
|> vont bien à la place, quand je tape TAB ou quand ça indente
|> automatiquement.

Le problème, ce n'est pas quand moi, j'édite le fichier. (Comme toi,
j'évite les tabs.) Le problème c'est quand c'est les autres.
"Pas besoin de gril : l'enfer, c'est les Autres."

--
Jean-Paul S.

Avatar
kanze
"Mickael Pointier" wrote in message
news:<cak9q1$fpg$...
C'est une économie de lignes, mais perso, je trouve pas ça joli.
Enfin tant qu'on omet pas les indentations à l'intérieur des
blocs, ce n'est pas gênant.



En fait, il n'y a qu'un seul style de vrai : celui des pères. Comme
on voit dans "The C Programming Language" (première édition,
évidemment, de 1978). La preuve, c'est le style que j'utilise chez
moi:-). (Et aussi évidemment, il ne dit pas grand chose sur comment
traiter les namespace.)


En fait mon style c'est celui du GFA Basic adapté au C :)


Du Basic ! Non ! Pas ça ! Pas du Basic !

Au moins, soyons cool. Le Basic, c'est comme régarder les films porno.
Tout le monde en fait, mais personne ne l'avoue. Le Basic, c'est le
Canal+, une heure du mat', de l'informatique.

Franchement, je déteste le C et le C++ au niveau syntaxique,


Join the club, comme on dit en anglais.

je ne supporte pas les ";", le fait de devoir parenthèser les
expressions n'a pour moi absolument aucun intéret, c'est juste du
verbiage inutile :)


N'exagérons pas. Même le Modula-2 avait des ';'. Et je ne sais pas
comment se passer des parenthèses dans des expressions comme (i+j)*5.

Mais bon, après effectivement on peut faire tout ce qu'on veut avec
ces langages là, donc je m'en sert.

Je serais très content de pouvoir remplacer:

if (expression)
{
do_truc(42);
}

par

if expression
do_truc(42)
endif


Comme en Modula-2, en Modula-3 et en Ada :

if someCondition() then
doTruc( 42 ) ;
else
doUnAutreTruc() ;
end if

En Modula-2 ou Modula-3, les ';' sont facultatifs en cet exemple. (Mais
je crois qu'ils sont obligatoire en Ada.)

Il y a des arguments des deux côtés. J'aime bien cette syntaxe aussi,
mais jusqu'ici, je ne connais pas de langage qui l'utilise ET qui permet
la declaration des variables à n'importe quel endroit du code (chose que
j'aime aussi).

Dans le temps, il y avait aussi un fort argument pour les {...} --
c'était plus facile pour l'éditeur de les reconnaître et de les traiter
comme un type de parenthèses (gestion de l'imbrication, indication de
l'ouverture quand on entre la fermature, etc.).

parce que franchement, le "}" n'importe pas beaucoup d'information sur
le type du scope.


Je ne connais pas ton Basic, mais dans les langages que je connais avec
end, il n'y a pas de portée de bloc.

A la place de

for (
{
while (
{
if (
{
}
}
}

est-ce que ca serait si terrible que ca d'avoir:

for (
while (
if (
endif
endwhile
endfor


Bof. Il serait encore mieux de ne pas écrire de trucs pareils. Une
fonction doit être courte et simple.

--
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
Pierre Maurette
typa:
[...]
En fait mon style c'est celui du GFA Basic adapté au C :)


Du Basic ! Non ! Pas ça ! Pas du Basic !
L'était bien, le GFA Basic sur ATARI ST. Et heureusement qu'on

l'avait.
Sinon, là, je vais sur Google à cause d'un problème de programmation
avec un "Gardena C1060 profi". Vous connaissez ?
--
Pierre


Avatar
Fabien LE LEZ
On 13 Jun 2004 15:27:29 -0500, Gabriel Dos Reis :

Lorsque C++ a introduit les « namespaces » -- que nombre de
programmeurs décrivent comme complexes -- les « ; » n'étaient pas
nécessaires pour marquer la fin de définition d'un namespace --
contrairement aux structs de C.


C'est logique : on peut instancier une classe, pas un namespace.
Quant à savoir si instancier une classe dans la même instruction que
sa définition est une bonne idée...

class Machin
{
//...
} un_machin;


--
schtroumpf schtroumpf

Avatar
Fabien LE LEZ
On 15 Jun 2004 01:30:11 -0700, :

la declaration des variables à n'importe quel endroit du code (chose que
j'aime aussi).


... et surtout qui est totalement indispensable en C++.

--
schtroumpf schtroumpf

8 9 10 11 12