Je passe généralement plusieurs étapes avec ce problème, m'arrêtant lorsque je ne peux pas comprendre comment aller plus loin.
Tout d'abord, faites ce que vous avez fait. Allez-y avec DRY. Si vous ne vous retrouvez pas avec un gros désordre poilu, vous avez terminé. Si, comme dans votre cas, vous n'avez pas de code en double mais que chaque booléen a sa valeur vérifiée dans 20 endroits différents, passez à l'étape suivante.
Deuxièmement, divisez le code en blocs. Les booléens sont référencés chacun une seule fois (enfin, peut-être parfois deux fois) pour diriger l'exécution vers le bloc de droite. Avec deux booléens, vous vous retrouvez avec quatre blocs. Chaque bloc est presque identique. DRY est parti. Ne faites pas de chaque bloc une méthode distincte. Ce serait plus élégant, mais mettre tout le code dans une seule méthode rend plus facile, voire possible, pour quiconque fait de la maintenance de voir qu'il doit effectuer chaque changement à quatre endroits. Avec un code bien organisé et un grand écran, les différences et les erreurs seront presque évidentes. Vous avez maintenant du code maintenable et il fonctionnera plus rapidement que le désordre emmêlé d'origine.
Troisièmement, essayez de saisir des lignes de code en double dans chacun de vos blocs et de les transformer en méthodes simples et agréables. Parfois, vous ne pouvez rien faire. Parfois, vous ne pouvez pas faire grand-chose. Mais chaque petit geste que vous faites vous ramène vers SEC et rend le code un peu plus facile à suivre et plus sûr à maintenir. Idéalement, votre méthode d'origine pourrait se retrouver sans code en double. À ce stade, vous souhaiterez peut-être le diviser en plusieurs méthodes sans les paramètres booléens ou vous ne le pouvez pas. La commodité du code d'appel est désormais la principale préoccupation.
J'ai ajouté ma réponse au grand nombre déjà ici à cause de la deuxième étape. Je déteste le code en double, mais si c'est le seul moyen intelligible de résoudre un problème, faites-le de telle manière que quiconque sache d'un coup d'œil ce que vous faites. Utilisez plusieurs blocs et une seule méthode. Rendez les blocs aussi identiques que possible dans les noms, l'espacement, les alignements, ... tout. Les différences devraient alors ressortir du lecteur. Il pourrait être évident de savoir comment le réécrire de manière SÈCHE, et sinon, le maintenir sera raisonnablement simple.
createTrajectory...
fonctions publiques appellent toutes?