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();
}
答案 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)
答案 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的版本在我看来也不错,但不太可读,但仍然是一种常见的做法。