web-dev-qa-db-fra.com

Guide de style pour C ++

En ce moment, j'utilise Google C++ Style Guide dans mon code C++ et j'en suis assez content.

Récemment, on m'a dit que ce guide est très mauvais: il est utilisé en interne par Google (je le savais), est obsolète et promeut de très mauvaises pratiques. Je veux donc utiliser un autre style de codage.

Quels sont les guides de style C++ bons et assez utilisés? J'écris du code pour gcc et Visual Studio, et j'utilise beaucoup de fonctionnalités C++ 11.

Ce que j'ai beaucoup aimé Google C++ Style Guide était l'indentation, l'espace blanc et les conventions de dénomination (nommer spécialement toutes les classes, types - y compris les typedefs, les alias de type et les alias de modèle - avec la première lettre majuscule).

Je sais que toute réponse est subjective (j'espère que c'est correct sur ce site) et j'apprécierais toute opinion, mais je suis intéressé par les guides utilisés ces jours-ci.

30
bolov

Vous pouvez utiliser les directives de ce livre pour une utilisation générale:

http://www.Amazon.com/Coding-Standards-Rules-Guidelines-Practices/dp/0321113586

de Herb Sutter et Andrei Alexandrescu. Il ne prend cependant pas en compte C++ 11, mais je pense qu'il y aura une nouvelle édition.

Mais il ne répondra pas au sujet du nombre d'espace au lieu des tabulations ou du type de notation ésotérique que vous souhaitez appliquer. Mais ce n'est pas la chose la plus importante, la plupart du temps juste pour avoir une certaine cohérence est la clé.

15
Nikko

Les C++ Core Guidelines sont un ensemble de directives, de règles et de meilleures pratiques éprouvées sur le codage en C++, vous pouvez les trouver ici: - https://github.com/isocpp/CppCoreGuidelines

Ils sont écrits par, entre autres, Bjarne Stroustrup et Herb Sutter .

23

Les critiques du guide de style C++ de Google (et je conviens que certaines sont justifiées) ne concernent pas les conventions de dénomination ou le style d'indentation de Google, mais plutôt certaines de leurs autres règles et politiques. Les conventions d'indentation/formatage et de dénomination sont toutes deux une question de goût et sont un terrain fertile pour des guerres religieuses interminables de programmeurs, mais en C++ où contrairement à C #, il n'y a pas de norme universelle, la seule directive vraiment importante est la cohérence. Pour un nouveau projet, choisissez une convention de dénomination et un style d'indentation que vous aimez et utilisez-le de manière cohérente. Pour un projet existant, respectez la convention déjà utilisée. La règle 0 dans Normes de codage C++ est "Ne pas transpirer les petites choses". où ils soutiennent que les conventions de dénomination et le style d'indentation ne sont tout simplement pas si importants tant que vous êtes cohérent.

Un gros booster de productivité pour moi a été d'automatiser l'indentation/le formatage en utilisant format clang . Une fois que vous avez défini certaines règles d'indentation et de formatage, je vous recommande vivement de configurer un fichier de configuration personnalisé au format .clang et de ne plus jamais vous en soucier :-)

Le format Clang est un outil autonome et ne nécessite pas que vous utilisiez clang comme compilateur. Il existe même un plugin officiel disponible pour Visual Studio.

8
mattnewport

Comme @ user113896 l'a écrit plus tôt, Bjarne Strostrup nous a donné beaucoup de conseils de style. L'une de ses belles réalisations est livre de style de codage JSF-C++ . Attention, ce n'est pas pour le c ++ normal, plus pour une utilisation intégrée, mais cela montre comment les choses doivent être faites pour être claires et fonctionnelles. Bien sûr - vous n'avez pas à tout prendre en compte - c'est un guide, pas un carnet de commandes :).

6
baderman

Si vous n'avez pas lu la programmation et les principes de Bjarne Stroustrup, je vous recommande fortement de le lire car vous pouvez apprendre beaucoup du créateur du langage. J'ai beaucoup regardé et lu de l'auteur C++ et je peux dire qu'il a cette fixation pour le style et dit toujours aux gens d'écrire du bon et beau code qui, selon lui, est plus facile à déboguer et à lire. Je crois qu'il est le meilleur tuteur et le meilleur guide pour écrire du code C++ élégant et beau.

2
user113896