Anti-Patterns: Was ist eine "Gottklasse" ?



  • Und was sagt der Guru dazu?

    tralala schrieb:

    Ich finde halt einfach das die Gefahr, dass man sich ungewollte abhängigkeiten schafft viel größer ist, vorallem, wenn man die freien Funktionen so schreibt, dass sie auch von anderen Klassen verwendet werden können.



  • tralala schrieb:

    Und was sagt der Guru dazu?

    tralala schrieb:

    Ich finde halt einfach das die Gefahr, dass man sich ungewollte abhängigkeiten schafft viel größer ist, vorallem, wenn man die freien Funktionen so schreibt, dass sie auch von anderen Klassen verwendet werden können.

    Toller Guru 😉 Aber du warst da glaub ich nicht gemeint...

    Ich weiß nicht welche "ungewollten Abhängigkeiten" du meinst... Sei mal deutlicher!
    Es geht hier auch um den generischen Ansatz.

    template < typename ContainerT >
    void clear( ContainerT &cnt )
    {
        cnt.erase( cnt.begin(), cnt.end() );
    }
    

    Sollte für vector/list/... aber eben auch für basic_string funktionieren.
    Stattdessen gibt es das clear() in den Klassen vector/... und basic_string.

    Und wenn deine allgemeine freie Funktion mal ausnahmsweise für einen bestimmten Typen anders implementiert wird (weil die Schnittstelle anders ist, blame you), dann gibt es eine Spezialisierung, die man auch gleich über den Header der nötigenden Klasse bekommt.

    Ich seh immer noch keine Abhängigkeiten...



  • Naja, das sind hier immer nur so trivial Beispiele mit Funktionen die aus 2 bis 3 Aktionen bestehen. Wer programmiert denn täglich irgendwelche Container mit so klar definiertem verhalten? Normal programmiert man irgendwelche kompliziertere Anwendungslogik und da finde ich es gefährlich alles aus den Klassen raus zu ziehen. Wenn die Anwenungslogik sich ändert oder nen Bug für einen Fall hatte, musst du schauen, ob andere Klassen die gleiche Funktion verwenden und ob sich da das verhalten auch ändern soll oder ob du hier und da was spezialisieren musst usw...


Anmelden zum Antworten