Forward Declarations
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
Beginnen Sie damit, den Dokumentationsabschnitt mit dem Titel "Forward Declare When Possible" zu finden und die ihn umgebenden Hinweise sowie alle verlinkten Referenzen zu lesen. Aktualisieren Sie die Empfehlung, um die im issue angesprochenen Bedenken hinsichtlich forward declarations widerzuspiegeln, und stellen Sie anschließend sicher, dass der Abschnitt in sich konsistent ist und die bevorzugte Vorgehensweise klar angibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Regarding "Forward Declare When Possible", I think you should (almost) never forward declare for the following reasons:
-
It makes backward compatible refactorings more complicated and prone to breakage. This is the reason that the the C++ Standard Library and abseil forbid forward declarations. In C++ you can often refactor a function into a lambda or function object or into a template and keep backward compatibility with uses of the function. However, the signature will have changed.
-
It is dangerous. Forward declarations are an easy way to get hard to diagnose errors like ODR violations. In addition, if something changed in a header you were depending on, forward declarations postpone the error to link-time or to compile time.
-
It is a short term optimization. Hopefully modules in C++ will come soon and make this better. But even without modules, such techniques as pre-compiled headers are safer and work in more scenarios.
Based on these, I think better advice would be to avoid forward declarations.
- 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