内联使用局部变量或链方法更好吗?

时间:2014-07-08 12:26:09

标签: java coding-style

如果我有一系列的方法调用,每个用于下一次调用的值,我应该将它们存储在局部变量中,如下所示:

DynamicForm filledForm = Form.form().bindFromRequest();
String shareIdStr = filledForm.get("data[shareId]");
UUID shareId = UUID.fromString(shareIdStr);
Share share = Share.find.byId(shareId);

或作为单个调用链,如下所示:

Share share = Share.find.byId(UUID.fromString(Form.form().bindFromRequest().get("data[shareId]")));

在这种情况下,唯一再次使用的值是share。也许答案介于两者之间,或者是完全不同的东西。你有什么看法?

4 个答案:

答案 0 :(得分:8)

  

不链接方法:

ADV

  1. 增强可读性。

  2. 提供重新使用的机会。

  3. 引脚异常(如果有)变得更容易。

  4. 调试变得更容易,即在特定调用上设置断点很容易。

  5. DisADV

    1. 增加代码的长度(我不会说大小:))。

    2. IDE警告(如果有)。

    3.   

      链接方法

      ADV

      1. 减少创建多个临时的需要。变量

      2. syntactic sugar

      3. 减少要写入的行数。

      4. DisADV

        1. 降低代码的可读性。

        2. 对于所谓的特定方法,评论变得很困难(如果有的话)。

        3. 调试整个调用链变得非常困难。

答案 1 :(得分:2)

第一种方法仅在稍后在方法中重用这些变量时才有用。如果没有,Eclipse会告诉你它们没有被使用。所以第二种方式更好,我想。

为了澄清一长串代码,我喜欢这样写:

Share share = Share.find
                   .byId(UUID.fromString(Form.form()
                                             .bindFromRequest()
                                             .get("data[shareId]")                                   
                                         )
                   );

答案 2 :(得分:1)

如果您认为不会重复使用变量,则只能比较这两种形式。否则,比较它们是没有意义的。

通常,第一个变体为您的代码提供了更多的可读性,并且可能使其更易于维护。

我个人为嵌入式系统开发了很多东西,其中目标平台对计算能力和大小有很大的限制。因此,我通常内联代码,以便我的字节码更小。

如果我要开发一个在功能强大的服务器上运行的应用程序,甚至是常规PC,那么我很可能会选择变体。

答案 3 :(得分:0)

取决于您希望如何阅读代码。如果要再次使用局部变量,则局部变量很有用。否则继续进行链调用。