有没有更简洁的方法来编写这个Java代码?

时间:2011-09-11 22:46:27

标签: java null

foo返回的lookup可能是null

如果foo.getFooStr()null,我首先返回null,这就是为什么我要避免在foo值上调用null

但是有更好(更简洁)的方式来写这个吗?

public static String getFooStr(String input)
{
    Foo foo = lookup(input);
    if(foo==null)
    {
        return null;
    }
    return foo.getFooStr();
}

6 个答案:

答案 0 :(得分:34)

你有两个问题:是否有更好的编写代码的方式,并且有一种更简洁的方式来编写代码。

关于更多简洁,这可能有效:

public static String getFooStr(String input) {
    Foo foo = lookup(input);          
    return foo == null ? null : foo.getFooStr();
}

关于更好:我认为可读性在任何一天都是简洁明了的。您的原始代码对我来说很好。重要的是你看起来很好,从现在起3个月内你更容易理解和调试。我听过有人说得最好 - 写下你的代码,以便其他人容易理解,更重要的是,你的未来自我。

答案 1 :(得分:6)

为什么没有lookup返回适当的foo字符串?

答案 2 :(得分:3)

我不喜欢java,但我确实喜欢干净的代码......源代码应该易于阅读和理解为人类 - 机器并不关心它看起来如何,但你的同事呢。更简洁的代码通常需要花费一两个时间来掌握(有时候根据数量和复杂程度而言需要很长的代码)。保持代码可以理解,并且它是可维护的(即使它有点冗长)!

答案 3 :(得分:3)

Groovy does it nicer

return lookup(input)?.fooStr

or even just

lookup(input)?.fooStr

答案 4 :(得分:2)

对于Java 7,在某些时候计划你可以写下这个:

public static String getFooStr(String input)
{
    Foo foo = lookup(input);
    return foo?.getFooStr();
}

但是,在众所周知此功能之前,您必须坚持使用?:运算符。

答案 5 :(得分:1)

我不喜欢在任何代码中的任何位置返回多个。我会改变它

public static String getFooStr(String input)
{
    Foo foo = lookup(input);
    String fooString;
    if(foo!=null)
    {
        fooString = foo.getFooStr();
    }
    return fooString;
}

@Hovercraft Full Of Eels的版本在我看来也不错,但不太可读,但仍然是一种常见的做法。