这可能听起来像一个愚蠢的问题,因为它可能没有其他方法可以做到这一点。在设计了我自己的列表之后,这种问题就出现了问题。多次出现。为了澄清,我在将新值赋给原始变量后返回缓存变量时遇到问题。这是一个例子:
public T next() {
final Node<T> thisNode = posNode;
posNode = posNode.getNext();
return thisNode.getData();
}
这似乎不是问题,但有时候在返回有效值之前必须缓存多个变量。我真的不喜欢它,因为我个人认为这会降低代码的可读性,尤其是在缓存多个变量时。
在维护其功能的同时还有另一种方法来编写此代码吗?基本上是一种在 return语句之后为变量分配新值的方法:
public T next() {
return posNode.getData();
posNode = posNode.getNext();
}
谢谢! :)
答案 0 :(得分:3)
第二种方法是不可能的,因为在return
之后无法访问代码。而你的第一种方式是达到你想要的最好的方式而且它不是代码味道。它们经常被称为临时变量。使用它们并通过更好的命名约定更好地向代码阅读器传达消息。对于前tempPosNode
答案 1 :(得分:2)
优雅(但有一些认知失调)选项是一种虚拟方法。
{{1}}
答案 2 :(得分:0)
您可以使用finally块来执行它,但即使在异常之后它也会执行:
public T next() {
try {
return posNode.getData();
} finally {
posNode = posNode.getNext();
}
}