Freie Funktionen bieten eine weit bessere Entkopplung und Übersichtlichkeit der Schnittstellen. Wenn der Großteil Ihrer algorithmischen Logik durch freie Funktionen bereitgestellt wird, müssen Ihre Datenstrukturen klare Zwecke und geeignete Schnittstellen haben. Das Ergebnis ist ein Code, der die Kopplung minimiert, was einfacher zu verstehen ist, zu testen und davon abhängig zu sein.
Im Allgemeinen sollten Datenstrukturen so klein wie möglich und so groß wie nötig sein, um einen bestimmten Zweck zu erfüllen; Datenstrukturen sollten über Komposition kombiniert werden, und Logik sollte durch freie Funktionen bereitgestellt werden, die so weit wie möglich auf die öffentlichen Schnittstellen der Daten zugreifen.
Member-Funktionen können bequem sein, und natürlich ist es notwendig, einige Mitgliederfunktionen auf die oben genannte Schnittstelle zur Verfügung zu stellen, aber es ist ein rutschiger Abhang, und wenn falsch gemacht, Sie am Ende mit etwas wie std::string
.
Was sollte sagen, "std :: malloc" sollte ein Mitglied in Ihrem imaginären besseren Paralleluniversum sein, und wie würde das den Softwareentwurf verbessern? –