[C++] Convention de codage Linux

Fermé
gnutator - 20 janv. 2007 à 19:15
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 - 23 janv. 2007 à 08:48
Bonjour,

je recherche un recueil des conventions de codage en C++ sous Linux.
Existe-il un tel document ?
Plusieurs projets proposent leurs conventions, mais je n'ai trouvé nulle part les conventions "générales".
J'ai trouvé les conventions du langage C sous www.gnu.org, mais pas celles du C++.

Je vous remercie d'avance de vos réponses.

.............
Gnutator
.............
A voir également:

5 réponses

mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
21 janv. 2007 à 13:43
C'est quoi ce que tu appelles des conventions de codage ?
Pour moi la seule chose importante que ce soit codé proprement (indenté, avec des vrais noms de variables, des lignes pas trop longue (si possible < 80 caractères)), que ça compile, et si possible sans warning.
gcc -W -Wall -o plop.exe plop.c

Bonne chance
0
BugMaker Messages postés 34 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 6 février 2008 7
21 janv. 2007 à 16:06
salut,
tout a fait d'accord avec toi mamiemando...
personnellement quel que soit le langage que j'utilise (c, c++, cobol, windev, basic, php et autres), je ne tolère même pas les warnings, je corrige même les type cast...
A+
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
21 janv. 2007 à 16:47
Bonjour,
je recherche un recueil des conventions de codage en C++ sous Linux.
J'ai trouvé les conventions du langage C sous www.gnu.org, mais pas celles du C++.

En meme temps linux est codé en C, non ?

Sinon d'accord pour le gcc -W -Wall -pedantic -std=c99 -ansi (à ta guise...)
Et généralement, une anomalie ne devrait pas arriver
0
Tout d'abord, merci de vos réponses.
Je compile toujours avec tous les warnings et en pedantic,
de même que je formate mon code à moins de 80 lignes de large.
En fait ce que j'entends par conventions, c'est la façon de formatter
le code et de nommer les classes, methodes, variables, ...

Par exemple:

int
main(int argc, char **argv)
{
...
}

ou

int main(int argc, char **argv)
{
...
}

double d_toto,
double dtoto
ou
double toto

etc...

Merci encore.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
23 janv. 2007 à 08:48
Alors quelques petites remarques.

- Le pedantic c'est bien mais il me semble qu'il fait la tête si tu fais des commentaires avec '//'. Personnellement je n'utilise pas cette option.

- Pour les conventions de nommage, en général on écrit tout en minuscule en utilisant des '_' (contrairement au java ou les noms de classes commencent par une majuscule) :
ex : c++ : ma_classe, ma_fonction
ex : java : MaClasse, maFonction
On remarquera que QT suit pourtant le second type de notation donc en fait c'est une convention discutable.

- Personnellement quand je déclare une structure une classe ou sune structure je termine toujours son nom par _t.
ex : ma_classe_t

- Quand je fais une boucle avec un iterator, je renomme toujours l'objet itéré avec une const référence, sauf si la boucle est très simple pour que ce soit plus lisible (sauf quand la boucle est vraiment très simple) :
int main(){
  std::map<std::string,int> m;
  m["janvier"] = 1;
  m["fevrier"] = 2;
  //...
  std::map<std::string,int>::const_iterator
    mit (m.begin()),
    mend(m.end());
  for(;mit!=mend;++mit){
    const std::string & mois = mit->first;
    const int & numero = mit->second;
    std::cout << mois << ' ' << numero << std::endl;
  }
  return 0;
}

- De manière générale utiliser le moins possible les using namespace pour plus de lisibilité. Ca alourdit un peu les types mais au moins on sait de quoi on parle et il n'y a pas d'ambiguité. En particulier, ne jamais utiliser un using namespace dans un header (.hpp, .h)

- Après plus sur le style de codage, en C++ on n'a pas besoin de malloc et free (il y a new et delete), de cast (il y a les static_cast, les dynamic_cast...).

- Utiliser le moins possible les new, les delete, les pointeur car la plupart du temps on peut se débrouiller juste avec le constructeur et les références, un peu comme le java. De même par le jeu des héritages le cast peut être très souvent éviter (et devrait l'être autant que possible).

- Ne passer à une fonction un pointeur que si c'est bien le pointeur qui est manipulé. Si c'est juste pour éviter d'empiler un gros objet en paramètre, ou pour que celui-ci soit modifiable par la fonction, utiliser une référence.

- Verrouiller le code au maximum. Bien mettre en private portected ce qui doit l'être, mettre les const pour les invariants etc...

Bonne chance
0