Const as Much as Possible (Not!)
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Dokumentation
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- cpp
- Bereich
- documentation
Rechercherichtung
In der Issue wird keine Datei und kein Test genannt. Beginne damit, den Best-Practices-Abschnitt zu finden, der const-Funktionsparameter behandelt, und vergleiche dann dessen Hinweise mit den C- und C++-Beispielen im Bericht; als erledigt gilt es, wenn die Dokumentation die direkte constness von Parametern klar von der constness der Daten unterscheidet, auf die gezeigt wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.)
- Vorherrschende Sprache
- Keine Sprachdaten
- Sterne
- 8.9k
- Forks
- 903
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus cpp-best-practices/cppbestpractices
-
Broken Link Chapter 2: Use_the_Tools_AvailableEvtl. wieder frei @vishesharma20 hat das vor 172 Tagen übernommen, und es ist kein Pull Request offen. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 64/100
cpp-best-practices/cppbestpractices#169 · 1 Kommentar ·
-
Broken Link - 11 Further ReadingEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 55/100
cpp-best-practices/cppbestpractices#168 · 1 Kommentar ·
-
C++ PracticeOffen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 10/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 35/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 45/100
cpp-best-practices/cppbestpractices#160 · 1 Kommentar ·
Alle Issues in cpp-best-practices/cppbestpractices
Ähnliche Issues
-
area-multi-tenancy p1-recommended technical-debt
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
Maintainer antworten meist innerhalb von 1 Tag
-
Docs: 2 broken linksOffenBug pulumi/pulumi-terraform-bridge R2 S2
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 72/100
pulumi/pulumi-terraform-bridge#3713 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
-
[Sync EN] Document the timezone of DateTime(Immutable)::createFromTimestamp() (#6074)Evtl. vergeben @lacatoire hat das heute übernommen. Offensync-en
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
[Sync EN] Document the timezone of DateTime(Immutable)::createFromTimestamp() (#6074)Evtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offensync-en
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
Maintainer antworten meist innerhalb von 1 Tag