Normalerweise gehe ich mit diesem Problem mehrere Schritte durch und höre auf, wenn ich nicht herausfinden kann, wie ich weiter gehen soll.
Tun Sie zuerst, was Sie getan haben. Gehen Sie hart mit DRY. Wenn Sie nicht mit einem großen haarigen Durcheinander enden, sind Sie fertig. Wenn Sie wie in Ihrem Fall keinen doppelten Code haben, aber jeder Boolesche Wert an 20 verschiedenen Stellen überprüft wird, fahren Sie mit dem nächsten Schritt fort.
Zweitens teilen Sie den Code in Blöcke. Die Booleschen Werte werden jeweils nur einmal (naja, manchmal auch zweimal) referenziert, um die Ausführung auf den richtigen Block zu lenken. Mit zwei Booleschen Werten erhalten Sie vier Blöcke. Jeder Block ist fast identisch. DRY ist weg. Machen Sie nicht jeden Block zu einer eigenen Methode. Das wäre eleganter, aber wenn Sie den gesamten Code in einer Methode zusammenfassen, kann jeder, der Wartungsarbeiten durchführt, einfacher oder sogar möglich erkennen, dass jede Änderung an vier Stellen vorgenommen werden muss. Mit gut organisiertem Code und einem großen Monitor werden die Unterschiede und Fehler fast offensichtlich sein. Sie haben jetzt wartbaren Code und er läuft schneller als das ursprüngliche Wirrwarr.
Drittens versuchen Sie, doppelte Codezeilen aus jedem Ihrer Blöcke zu holen und sie zu netten, einfachen Methoden zu machen. Manchmal kann man nichts machen. Manchmal kann man nicht viel machen. Aber jedes kleine bisschen, das Sie tun, bringt Sie zurück in Richtung DRY und macht den Code ein bisschen einfacher zu befolgen und sicherer zu pflegen. Im Idealfall enthält Ihre ursprüngliche Methode möglicherweise keinen doppelten Code. Zu diesem Zeitpunkt möchten Sie es möglicherweise ohne die booleschen Parameter in mehrere Methoden aufteilen oder nicht. Die Bequemlichkeit des aufrufenden Codes ist jetzt das Hauptanliegen.
Ich habe meine Antwort zu der großen Zahl bereits hier wegen des zweiten Schritts hinzugefügt. Ich hasse doppelten Code, aber wenn dies der einzig verständliche Weg ist, ein Problem zu lösen, tun Sie dies so, dass jeder auf einen Blick weiß, was Sie tun. Verwenden Sie mehrere Blöcke und nur eine Methode. Machen Sie die Blöcke in Namen, Abständen, Ausrichtungen usw. so identisch wie möglich. Die Unterschiede sollten dann beim Leser herausspringen. Es könnte offensichtlich machen, wie man es auf trockene Weise umschreibt, und wenn nicht, ist die Wartung ziemlich einfach.
createTrajectory...
alle verschiedenen öffentlichen Funktionen aufrufen?