gpt4 book ai didi

java - 重构这个简单方法的最有效方法是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 08:04:56 24 4
gpt4 key购买 nike

我实现了一个非常简单的方法:

private String getProfileName(String path) {
String testPath = null;
for (int i = 0; i < path.length(); i++) {
testPath = path.substring(0, i);
if ( testPath.endsWith("1") || testPath.endsWith("2") || testPath.endsWith("3") || testPath.endsWith("4") || testPath.endsWith("5") || testPath.endsWith("6") || testPath.endsWith("7") || testPath.endsWith("8") || testPath.endsWith("9") ) {
break;
}
}
return testPath.substring(0, (testPath.length() - 1));
}

我不喜欢整个方法,因为我认为它比必要的更复杂,尤其是 if 条件。

于是想到了重构这个方法的方法。首先,我想到使用 Regex 来替换 if 条件,但是对于这个简单的情况,regex 是不是有点太多了?

关于如何重构它还有其他想法吗?

最佳答案

将此模式与匹配器一起使用:

"^[^1-9]*"

示例代码:

private String getProfileName(String path) {
Pattern pattern = Pattern.compile("^[^1-9]*");
Matcher matcher = pattern.matcher(path);
matcher.find();
return matcher.group();
}

我认为这比您的代码更容易理解。我花了几分钟才弄清楚你的逻辑,我必须运行它才能确定。我认为使用正则表达式很清楚代码在做什么。如果您愿意,您可以只编译正则表达式一次,然后通过将其移动到类的静态成员来重用它。

正则表达式在 Stack Overflow 上有一个非常糟糕的耻辱(主要是人们试图用它们来解析 HTML、电子邮件地址、URL 以及各种其他正则表达式的不当使用)。但对于这类任务,正则表达式就可以了。

您可能还想考虑为什么要省略 0,这是否是个好主意。

关于java - 重构这个简单方法的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3461308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com