Я обычно делаю несколько шагов с этой проблемой, останавливаясь, когда не могу понять, как идти дальше.
Во-первых, делай то, что сделал. Тяжело с СУХОЙ. Если вы не получите большой волосатый беспорядок, все готово. Если, как и в вашем случае, у вас нет повторяющегося кода, но каждое логическое значение проверяется в 20 различных местах, переходите к следующему шагу.
Во-вторых, разбить код на блоки. На логические значения ссылаются только один раз (ну, может быть, иногда два раза), чтобы направить выполнение к нужному блоку. С двумя логическими значениями вы получите четыре блока. Каждый блок практически идентичен. СУХОЙ нет Не делайте каждый блок отдельным методом. Это было бы более элегантно, но помещение всего кода в один метод облегчает или даже делает возможным для тех, кто занимается техническим обслуживанием, видеть, что они должны вносить каждое изменение в четырех местах. С хорошо организованным кодом и высоким монитором различия и ошибки будут почти очевидны. Теперь у вас есть поддерживаемый код, и он будет работать быстрее, чем исходный запутанный беспорядок.
В-третьих, попытайтесь собрать дубликаты строк кода в каждом из ваших блоков и превратить их в приятные, простые методы. Иногда ты ничего не можешь сделать. Иногда вы не можете сделать много. Но каждый маленький шаг, который вы делаете, возвращает вас к СУХОЙ и делает код чуть легче следовать и безопаснее поддерживать. В идеале ваш оригинальный метод может не иметь дублирующегося кода. В этот момент вы можете разделить его на несколько методов без логических параметров или нет. Удобство вызова кода в настоящее время является главной заботой.
Я добавил свой ответ к большому числу уже здесь из-за второго шага. Я ненавижу повторяющийся код, но если это единственный понятный способ решения проблемы, делайте это так, чтобы кто-нибудь сразу понял, что вы делаете. Используйте несколько блоков и только один метод. Сделайте блоки как можно более одинаковыми в именах, интервалах, выравниваниях ... во всем. Различия должны затем выскочить на читателя. Это может сделать очевидным, как переписать его в СУХОЙ манере, и если нет, то его поддержание будет достаточно простым.
createTrajectory...
функции вызывают?