在新变量赋值之前返回变量的优雅方式?

时间:2018-03-14 13:39:54

标签: java variables syntax syntactic-sugar

这可能听起来像一个愚蠢的问题,因为它可能没有其他方法可以做到这一点。在设计了我自己的列表之后,这种问题就出现了问题。多次出现。为了澄清,我在将新值赋给原始变量后返回缓存变量时遇到问题。这是一个例子:

public T next() {
            final Node<T> thisNode = posNode;
            posNode = posNode.getNext();
            return thisNode.getData();
        }

这似乎不是问题,但有时候在返回有效值之前必须缓存多个变量。我真的不喜欢它,因为我个人认为这会降低代码的可读性,尤其是在缓存多个变量时。

在维护其功能的同时还有另一种方法来编写此代码吗?基本上是一种在 return语句之后为变量分配新值的方法:

public T next() {
            return posNode.getData();
            posNode = posNode.getNext();
        }

谢谢! :)

3 个答案:

答案 0 :(得分:3)

第二种方法是不可能的,因为在return之后无法访问代码。而你的第一种方式是达到你想要的最好的方式而且它不是代码味道。它们经常被称为临时变量。使用它们并通过更好的命名约定更好地向代码阅读器传达消息。对于前tempPosNode

答案 1 :(得分:2)

优雅(但有一些认知失调)选项是一种虚拟方法。

{{1}}

答案 2 :(得分:0)

您可以使用finally块来执行它,但即使在异常之后它也会执行:

 public T next() {
      try {
        return posNode.getData();
      } finally {
        posNode = posNode.getNext();
      }
 }