Const as Much as Possible (Not!)
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 35/100
- Type d'issue
- Documentation
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- cpp
- Domaine
- documentation
Piste de recherche
Aucun fichier ni test n’est nommé dans l’issue. Commencez par localiser la section best practices qui traite des paramètres de fonction const, puis comparez ses recommandations avec les exemples en C et C++ du rapport ; le travail est terminé lorsque la documentation distingue clairement la constness directe des paramètres de la constness des données pointées.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
While "Const as Much as Possible" is generally good practice, const should not be directly used on function declaration parameters, including member functions.
A quick example:
void foo (int x);
void foo (int const x) {return x * 2;}
void bar (char const * s);
void bar (char const * const s) {puts(s);}
Notice I said "directly". Hence s isn't const in the declaration, but is in the definition (direct), but what s points at is const in both, and must match in both (indirect).
The reason for doing this is to not leak a function's implementation details. Because whether a function treats a parameter variable as const or not is an implementation detail of the function. And if a function gets modified such that its parameter is no longer treated as const, then callers of that function shouldn't have to be recompiled.
This is a difference between C and C++. In C, the function definition's parameter type(s) must exactly match that of the function declarations. (At least it used to. I haven't actually developed anything significant with modern C.)
- Langage dominant
- Aucune donnée de langage
- Étoiles
- 8.9k
- Forks
- 903
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de cpp-best-practices/cppbestpractices
-
Broken Link Chapter 2: Use_the_Tools_AvailablePeut-être à nouveau libre @vishesharma20 l’a pris il y a 172 jours, et aucune pull request n’est ouverte. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 64/100
cpp-best-practices/cppbestpractices#169 · 1 commentaire ·
-
Broken Link - 11 Further ReadingPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 55/100
cpp-best-practices/cppbestpractices#168 · 1 commentaire ·
-
C++ PracticeOuverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 10/100
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 35/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 45/100
cpp-best-practices/cppbestpractices#160 · 1 commentaire ·
Toutes les issues de cpp-best-practices/cppbestpractices
Issues similaires
-
area-multi-tenancy p1-recommended technical-debt
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
Les mainteneurs répondent en général sous 1 jour
-
Docs: 2 broken linksOuverteBug pulumi/pulumi-terraform-bridge R2 S2
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
pulumi/pulumi-terraform-bridge#3713 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
-
[Sync EN] Document the timezone of DateTime(Immutable)::createFromTimestamp() (#6074)Peut-être pris @lacatoire l’a pris aujourd’hui. Ouvertesync-en
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
[Sync EN] Document the timezone of DateTime(Immutable)::createFromTimestamp() (#6074)Peut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouvertesync-en
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour