java - 嵌套方法 vs "piped"方法,哪个更好?

标签 java

自大学以来,我已经用 Java 编程了 3 年,虽然我并没有完全专注于这门语言,但我已经在它上面花费了相当多的时间。两种方式我都懂,只是好奇你更喜欢哪种风格。

请关注主要方法 - 这是我最关心的部分。

public class Test
{
    public static void main(String[] args)
    { 
        System.out.println(getAgent().getAgentName());
    }

    private static Agent getAgent()
    {
        return new Agent();
    }
}
class Agent
{
    private String getAgentName()
    {
        return "John Smith";
    }
}

我对像下面这样的嵌套方法调用非常满意

public class Test
{
    public static void main(String[] args)
    { 
        System.out.println(getAgentName(getAgent()));
    }

    private static String getAgentName(Agent agent)
    {
        return agent.getName();
    }

    private static Agent getAgent()
    {
        return new Agent();
    }
}
class Agent
{
    public String getName()
    {
        return "John Smith";
    }
}

他们有相同的输出我看到“John Smith”两次。

我想知道,这样做的一种方式是否比另一种方式具有更好的性能或其他优势。就我个人而言,我更喜欢后者,因为对于嵌套方法,我当然可以分辨出哪个先开始,哪个在后。

上面的代码只是一个示例,我现在使用的代码要复杂得多,有点像迷宫......所以在两种风格之间切换经常让我立刻头晕。

最佳答案

我会反对后一种风格,因为它将数据检索与“业务逻辑”(即如何处理数据)混合在一起。 使用第一种方法,您可以高度自由地处理数据,例如

public static void main(String[] args)
{ 
      System.out.println(getAgent().getAgentName());
      System.err.println(getAgent().getAgentName());
      someTextArea.append("The agent name is: " + getAgent().getAgentName());
      // etc
}

如果您选择以这种方式做事,至少要用能清楚描述所做的事情的名称来命名函数,例如

private static void getAgentNameAndPrintIt(Agent agent)
{
    System.out.println(agent.getName());
}

关于java - 嵌套方法 vs "piped"方法,哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2437570/

相关文章:

java - RichFaces4 不渲染组件

Java fx tableview 在设置新项时抛出空指针异常

java.lang.IllegalStateException : onGetLayoutInflater() cannot be executed until the Fragment is attached to the FragmentManager 错误

java - 具有抽象字段的抽象类和无需强制转换的子类

java - 如何使用 Maven 避免 EAR/WAR 中派生依赖项的重复?

java - 在java中初始化任何类时,它会创建两个对象吗?

java - 判断数组是否为一维的函数

java - 在 playframework 中打开文件夹选择

java - 使用代理模式编写服务器是个好主意吗?

java - 如何通过 Java 中的通用通配符捕获创建数组的克隆?