rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[C++] Convention de codage Linux

Posté par gnutator, le samedi 20 janvier 2007 à 19:15:41
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
Répondre à gnutator  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mamiemando, le dimanche 21 janvier 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
BugMaker, le dimanche 21 janvier 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ekra, le dimanche 21 janvier 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Gnutator, le lundi 22 janvier 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 mamiemando, le mardi 23 janvier 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
Logiciels pertinents trouvés dans les téléchargements
Télécharger K-Lite Codec Pack Full 4.0.0K-Lite Codec Pack Full - K-Lite Codec Pack est une collection de codecs et de filtres nécessaires pour encoder ou décoder des formats audio ou vidéo....Catégorie: Codecs
Licence: Open Source
Télécharger K-Lite Codec Pack Standard 4.0.0K-Lite Codec Pack Standard - K-Lite Codec Pack est une collection de codecs et de filtres nécessaires pour encoder ou décoder des formats audio ou vidéo....Catégorie: Codecs
Licence: Open Source
Télécharger Vista Codec Package 4.7.2Vista Codec Package - Vista Codec Package regroupe une collection impressionnante de codecs (audio et vidéo), permettant d'ouvrir la plupart...Catégorie: Codecs
Licence: Freeware/gratuit
Télécharger K-Lite Mega Codec Pack 4.0.0K-Lite Mega Codec Pack - K-Lite Codec Pack est une collection de codecs et de filtres nécessaires pour encoder ou décoder des formats audio ou vidéo....Catégorie: Codecs
Licence: Open Source
Plus de logiciels gratuits sur « [C++] Convention de codage Linux »