Необходимо определить константу для строкового литерала [SonarQube Smell] - PullRequest
0 голосов
/ 29 октября 2018

Мне нужно удалить лишние пробелы из строки, которую я получаю из JSP. Прежде чем вызывать метод setter, я использую нижеприведенное для удаления пробелов:

class_name=class_name.replaceAll("\\s{2,}", " ").trim();

Сонарное сканирование дает мне запах определения константы вместо использования литерала. Как поместить содержимое в параметре replaceAll в константу? И используйте эту константу в качестве параметра.

Результат сканирования сонара: - Определите константу вместо использования этого литерала "\ s {2,}" 8 раз.

1 Ответ

0 голосов
/ 29 октября 2018

Определение констант для строковых литералов (а иногда и примитивных литералов) не всегда полезно.

В этом случае трудно понять, что я назвал бы константой, чтобы она была осмысленной и более читаемой; и вам, вероятно, будет предложено сделать то же самое для обоих параметров:

class_name.replaceAll(TWO_OR_MORE_SPACES_PATTERN, ONE_SPACE_REPLACEMENT).trim()

Это действительно лучше? Я бы сказал нет.

Если проблема в том, что вы используете одну и ту же логику замены / обрезки во многих местах, вместо этого определите метод:

static String replaceSpacesAndStrip(String className) {
  return className.replaceAll("\\s{2,}", " ").trim();
}

и затем вызвать:

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