Klassenfunktionen in mehrere Header unübersichtlich?



  • Da der Umfang einiger meiner Klassenfunktionsdefinitionen immer umfangreicher wird, habe ich angefangen zusammengehörige Funktionen wie reine Algorithmen in einer 3ten oder 4ten (neben der *.cpp und *.hpp) Datei unterzubringen.
    Für mich, da ich das Programm hoffentlich kenne, ist das kein Problem.

    Meine Frage: Ist das eine gängige Art und Weise, oder vermeidet man solch eine Strukturierung, weil es evtl. frustrierend für Dritte werden könnte, die dann diese Klassenfunktionen erst mal suchen müssen?
    "Sprechende" Dateinamen könnten da ja abhelfen.



  • sowas kann man machen, muss man aber nicht. .cpp Dateien mit mehreren tausend Zeilen sind keine Seltenheit und durchaus üblich.
    In den meisten aktuellen IDEs ists auch ohne weiteres möglich, Funktionsdefinitionen "einzuklappen", so dass dann das Scrollen nicht ganz so mühselig ist.



  • pumuckl schrieb:

    ... .cpp Dateien mit mehreren tausend Zeilen sind keine Seltenheit und durchaus üblich. ...

    Wobei man sich ab einer gewissen Größe dennoch fragen sollte ob eine Klasse nicht einfach zuviel macht (Das heißt jetzt nicht das man sagt: 1000 Zeilen und nicht mehr, sondern einfach das man irgendwann auch über die Größe nachdenken sollte).

    @monde: Ich habe dieses Splitting von cpp-Dateien mal ausprobiert, den Vorteil aber nicht festgestellt. In der Regel stelle ich auch fest das die Größe meist mit dem Design einhergeht und man dann wirklich eher logisch die Klasse aufsplitten sollte.

    cu André



  • asc schrieb:

    Wobei man sich ab einer gewissen Größe dennoch fragen sollte ob eine Klasse nicht einfach zuviel macht

    Sicher, eine Klasse sollte eine feste, begrenzte undwohldefinierte Verantwortung haben - und eine Methode sollte auch nur eine Funktion haben und nicht mehrere.

    Siehe unter anderem auch
    GotW: COde complexity Part II
    GotW: Monoliths "unstrung"



  • monde schrieb:

    Meine Frage: Ist das eine gängige Art und Weise, oder vermeidet man solch eine Strukturierung, weil es evtl. frustrierend für Dritte werden könnte, die dann diese Klassenfunktionen erst mal suchen müssen?
    "Sprechende" Dateinamen könnten da ja abhelfen.

    Ich unterstelle mal, dass es sich hier um genau eine Klasse mit vielen Methoden handelt.
    Nein - das ist keine gängige Art & Weise. Wie meine Vorposter schon erwähnt haben, deutet das stark auf ein Design-Problem hin. Dein Programm ist zu wenig strukturiert.
    Sourcen mit deutlich über 1000 Zeilen sind zwar üblich, aber bei näherem Hinsehen immer zu groß und unübersichtlich und auf Dauer nur aufwendig - das heißt teuer - pflegbar.

    Gruß
    Werner


Log in to reply