java - 这与方法之间的区别

标签 java

我必须使用一种方法来调用一个以“”作为连接字符串a和b的参数的连接器,我必须检查两侧是否为空(“”)。 两个代码都有效,但我不明白为什么我的审阅者希望我按照他的方式来做。如果有人可以向我解释它的好处,那就太好了。

我的方法。

public static String join(String a, String b) {
    StringJoiner sj = new StringJoiner(" ");
    if (a.endsWith("dieci") || a.endsWith("veinti")) {
        return a + b;
    }       
    if (a.equals("")) {
        return b;
    }
    if (b.contentEquals("")) {
        return a;
    }
    sj.add(a);
    sj.add(b);
    return sj.toString();
}

他的方法。

public static String join(String a, String b) {
    if (a.endsWith("dieci") || a.endsWith("veinti")) {
        return a + b;
    }
    return Stream.of(a, b).filter(s ->!s.isEmpty()).collect(Collectors.joining(" "));       
}

最佳答案

他的要简单得多;在一行中,它基本上说:

Take Strings a and b, get rid of the empty ones, and join the remaining ones with spaces, returning the result.

这样可以很清楚地看出代码的意图。它还可以防止错误,因为在分散的代码中更容易出现拼写错误或逻辑错误,从而将实现分解为多种不同的情况。

诚然,这可能比您的代码更难理解,因为初学者可能不会理解流。但是一旦你理解了它们,它肯定更容易阅读(至少在这种情况下,但并非总是如此),并且它使得编写此类方法变得更加容易。因此,最好现在就学习此类 Java 结构并使用它们,而不是以后再使用。

他的代码也更加灵活。如果您必须使该方法连接三个字符串,则对其方法的唯一修改就是更改 Stream.of(a, b)Stream.of(a, b, c) 。您的方法需要进行更多更改。

此外,使用isEmpty().equals("") 更清晰因为它用更自然的英语术语说明了您正在做的事情。这又可以防止拼写错误,因为您可能会意外地这样做 .equals(" ") (带空格)或其他东西。

另外,为什么使用两种不同的方法( equalscontentEquals )来做同样的事情?这很令人困惑。他的方法并没有做到这一点。

关于java - 这与方法之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56300739/

相关文章:

java - 收缩库代码

java - 拦截所有从 Java 应用程序发出的 HTTP 请求

java - 如何让 hadoop 忽略\n 输入文件中的字符?

java - 如何获取 mime 类型的 p7s 文件?

java - 在命令行运行 java 程序,我做错了什么?

Java:匿名类的初始化和构造函数

java - 什么是 "allocation pools for temporary objects"?

Java 泛型 - 不能应用于给定类型

java - ArrayList 的 toArray() 方法无法正常工作

java - this.getClass().getResource() 在哪里看?