Hallo, In C++ sollte ich da immer alles in ein Klassenkorsett zwängen oder ist es auch gängige praxis Funktionen in einem Modul zu definieren und ihre Prototypen in einer Header Datei aufzuführen. Also alles was diesen Header includiert, kann auf die Funktionen im Modul zugreifen. Genauso könnte ich das auch in einer Klasse umsetzen. Klassendeklaration und Definition. Die Frage ist also immer alles in Klassen quetschen oder gehen auch Module.
Der Begriff "Modul" ist in C++ noch in der Ausarbeitung, du meinst vermutlich einen Namespace? Dann ist es Geschmacksache. Leute, die aus der Java-Welt kommen, packen alle Funktionen als Memberfunktion in eine Klasse, weil es in Java gar keine Funktionen gibt, sondern nur Methoden (der dortige Begriff für Memberfunktion). In C++ gibt es APIs mit beiden Varianten. In der STL sind die Algorithmen beispielsweise außerhalb der Klassen implementiert, z.B. for_each(...vector...) statt vector::for_each. Ich persönlich mache es so: In eine Klasse gehört alles, was den Zustand der Klasse betrifft, d.h. Funktionen, die Membervariablen ändern oder benötigen. In den Namespace kommen Funktionen, die mithilfe der Klasse und ihrer Memberfunktionen höhere Aufgaben erledigen können. Beispiel: Es gibt eine Klasse HTTPClient, die sich um HTTP-Funktionen kümmert. Diese sind zustandsbehaftet, z.B. für Authentifizierung und Cookies. Eine Funktion "download", die den Inhalt einer URL in eine Datei schreibt, würde ich dann nicht in diese Klasse packen, sondern so: download(url, file, client = Client()). Das macht auch das Testen einfacher, weil "client" in dem Fall ein Interface ist, das beim Testen durch einen Stub oder Mock ersetzt werden kann.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.