Как уменьшить цикломатическую сложность моего метода - PullRequest
0 голосов
/ 22 января 2019

Следующий код дает мне Cyclomatic сложность 35.

public void updateGUIInProgress(StatusLabelDTO statusLabelDTO) {
    Display.getDefault().asyncExec(new Runnable() {

        @Override
        public void run() {
            label1.setText(statusLabelDTO.getIterationStr());
            label2.setMaximum(statusLabelDTO.getTotalCount());
            label3.setSelection(statusLabelDTO.getExeIndex());
            label4.setText(statusLabelDTO.getStepStr());
            label5.setText(statusLabelDTO.getPassStr());
            label6.setText(statusLabelDTO.getFailStr());
        }
    });
}

Я попытался переместить все строки настроек в метод. Однако это не сработало для меня. Как я могу уменьшить сложность?

1 Ответ

0 голосов
/ 22 января 2019

Не зная инструмента, который вычисляет цикломатическую сложность для вас, это действительно сложно. В конце концов, ваш код мало что делает.

Вы могли бы сделать рефакторинг так:

someDisplayYouAcquiredPreviously.asyncExec(new SpecificRunnable());

Очевидно, что для этого требуется, чтобы вы сохраняли этот объект Display ранее, а также для того, чтобы вы использовали отдельный именованный класс вместо этого анонимного внутреннего класса.

Но реальный ответ таков: посмотрите на свои инструменты. Википедия рассказывает нам о цикломатической сложности :

Цикломатическая сложность раздела исходного кода - это количество линейно независимых путей внутри него. Например, если исходный код не содержит операторов потока управления (условия или точки принятия решения), сложность будет равна 1, поскольку в коде будет только один путь.

В вашем коде есть ровно один путь, поэтому значение должно быть 1, а не 35.

Другими словами: ваш инструмент, кажется, вычисляет неправильные числа, возможно, он не понимает синтаксис Java. Поэтому реальный ответ - сделать шаг назад и посмотреть, какие настройки / инструменты вы используете.

И да, я нахожу наиболее вероятным, что пользователь Халк прав, и вам следует обновить свой инструмент до более новой версии, поскольку это, вероятно, ошибка 199 в приложении «Монитор исходного кода».

И подсказка: вы знаете, хотите отступить и проверить версии всех ваших других инструментов в вашей среде. Одно дело быть консервативным в отношении обновлений, но использование 7-летних версий больше не является «консервативным», это грубо небрежно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...