Code Strukturierung



  • Ich habe eine Frage bezüglich einer optimalen Code-Struktur.
    Meine dummy Methode sieht ungefähr so aus:

    void dummy()
    {
    if()
    {
     if()
     {
      if()
      {
         ...
         mach was wichtiges
         ... 
      }
       ....
     }
    ...
    }
    }
    

    Das nur so als Beispiel, nun muss ich eine zweite Funktionalität implementieren. Die zu 99% gleich wie die obige aussieht und nur an der "mach was wichtiges" Stelle zusätzlich noch wirkt, sagen wir "mach was anderes".

    Meine Frage ist, welche Methoden habe ich, um es übersichtlich zu halten?
    Ich kann natürlich "mach was anderes" in eine eigene funktion auslagern, der Haken, diese Funktion hängt von sehr vielen Informationen ab und sie verändert noch andere Zustände in dem Code da oben.
    noch mehr if-Bedingungen usw würd ich ungern machen, da dort eine Menge an Informationen gekapselt ist.
    Die andere Methode ist dummy redundant zu haben, wo sehr viel Code doppelt verwendet wird und nur die Schlüsselstellen geändert werden. Problem hier ist, ändert man was in dem redundanten Code, muss man das immer wiederholt nachziehen.

    Gibts da n paar Entwicklungsmuster, die einem helfen?
    Man kann dummy nicht wirklich in untermethoden aufbrechen, weil die alle auf Variablen zugreifen, die während der Abarbeitung der ifs und anderer Befehle generiert werden und das durchschleifen von dutzend Parametern find ich unglücklich.

    Wäre dankbar für ein paar Tipps



  • Wenn du damit rechnest, am Code nachträglich noch Änderungen zu machen, finde ich zwei Funktionen nicht wirklich diskutabel.
    Kommt mach-was-anderes erst nach mach-was-wichtiges oder sind die beiden "gemischt"? Im ersten Fall würde ein einfache weitere Abfrage zum Ziel führen.
    Übrigens, um die Übersichtlichkeit zu erhöhen, könntest du überprüfen, ob an manchen Stellen statt einem if (blubb) {} nicht if (!blubb)return; angebrachter ist.
    Reduziert die Einrücktiefe und erhöht die Übersichtlichkeit z.T. drastisch, da der Leser sofort weiß, dass an der Stelle Ende ist.



  • Ein Template wäre eine Möglichkeit:

    template< typename F >
    void dummy( F func )
    {
        if() // n mal
            ...
            func(..); // evt. auch mit Parametern
    }
    

    und dann packt man das "mach was wichtiges" und "mach was anderes" jeweils in eine Funktion und übergibt die Funktion an 'dummy' als Parameter.


Log in to reply