java - 需要为字符串文字定义一个常量[SonarQube Smell]
问题描述
我需要从从 JSP 获得的字符串中删除多余的空格。在调用 setter 方法之前,我使用以下内容删除空格:
class_name=class_name.replaceAll("\\s{2,}", " ").trim();
声纳扫描给我气味说明定义一个常量而不是使用文字。如何将replaceAll参数中的内容放在一个常量中?并使用该常数作为参数。
声纳扫描结果:- 定义一个常量而不是使用这个 "\s{2,}" 文字 8 次。
解决方案
为字符串文字(有时是原始文字)定义常量并不总是有帮助的。
在这种情况下,很难知道我会怎样称呼这个常量,这样它才有意义且更具可读性;并且您可能会被鼓励对两个参数执行相同的操作:
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);
推荐阅读
- python - 如何在 python 中修复这种可能性并绘制它?
- c++ - 如何通过 libpq C++ API 在 PostgreSQL 表中插入字节数组
- c# - 如何通过 websocket 将音频发送到 Nexmo Voice
- c - ArduinoJSON;测试 JSON / Conversion 中是否存在属性
- c++ - 后缀递增和递减是从左到右关联还是相反?
- awk - 使用 cut 过滤固定宽度的文件
- c++ - 在 Qt 中通过信号和槽系统传递变量
- mysql - 处理 searchresults.jsp 时发生异常
- html - 右面板底部有 div
- django - Django 两因素身份验证设置