Rechercher : dans
Par :

[C++] Convention de codage Linux

Dernière réponse le 23 jan 2007 à 08:48:25 gnutator, le 20 jan 2007 à 19:15:41 
 Signaler ce message aux modérateurs

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

Configuration: Linux
Epiphany 2.16

Meilleures réponses pour « [C++] Convention de codage Linux » dans :
Compiler du C sous Linux/UNIX VoirSous Linux, le compilateur de C est gcc. Il est installé de base sur plusieurs distributions, mais sur Debian (et celles qui en découlent) il faudra l'installer (aptitude install gcc). gcc Syntaxe de GCC gcc Tout d'abord, il faut savoir...
Linux n'est pas Windows VoirCet article est long, mais sa lecture est très chaudement recommandée à toute personne qui souhaiterait passer sous Linux. Cela vous évitera de nombreuses frustrations. Note préliminaire: Cet article est copié de blog-libre.fr avec des...
Programmation réseau - Les sockets VoirIntroduction aux sockets La notion de sockets a été introduite dans les distributions de Berkeley (un fameux système de type UNIX, dont beaucoup de distributions actuelles utilisent des morceaux de code), c'est la raison pour laquelle on parle...
C++ .NET VoirC++.NET C++.NET est une version étendue du langage C++ standard qui fournit le support de la programmation managée. Les extensions managées pour C++ sont principalement constituées d’un ensemble de mots clés et d’attributs. Tout fichier...
Langage C - Les tableaux VoirType de données complexes Les variables, telles que nous les avons vues, ne permettent de stocker qu'une seule donnée à la fois. Or, pour de nombreuses données, comme cela est souvent le cas, des variables distinctes seraient beaucoup trop lourdes...

1

mamiemando, le 21 jan 2007 à 13:43:25

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

Répondre à mamiemando

2

BugMaker, le 21 jan 2007 à 16:06:28

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+ s'il n'y a pas de solution, c'est qu'il n'y a pas de problème !

Répondre à BugMaker

3

ekra, le 21 jan 2007 à 16:47:34

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
Vive Linux, les vacances et les gauffres !

Répondre à ekra

4

Gnutator, le 22 jan 2007 à 01:20:55

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.

Répondre à Gnutator

5

 mamiemando, le 23 jan 2007 à 08:48:25

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

Répondre à mamiemando