【问题标题】:Java one line variable declaration? [closed]Java 一行变量声明? [关闭]
【发布时间】:2013-11-21 09:51:14
【问题描述】:

在我的 Java 类中,我声明这样的变量

BigDecimal sumFeeBilled = new BigDecimal(0), sumPaid = new BigDecimal(0); 

或者我们必须在多行中这样声明

BigDecimal sumFeeBilled = new BigDecimal(0);
BigDecimal  sumPaid = new BigDecimal(0);

我们应该关注哪一个?

【问题讨论】:

  • 这是品味和代码可读性的问题。
  • 见仁见智,但我更喜欢第二种方式,因为它更清晰。
  • @Kayaman 完全同意。我的眼睛被训练在第一个声明的变量被赋值后停止。
  • 我更喜欢第二种方式,因为它更具可读性...
  • 我认为这不仅仅是意见。这么说,恕我直言,暗示了一种非常个人主义的世界观。有些事情必须有一个标准,如果你为我工作,你对此的看法将是空的,因为我想要并且要求我的代码库在可读性和结构方面同样可靠地一致。如果您的代码仅限于您,那么我想它会是您喜欢的任何东西,但我能想到这样做的唯一原因是出于懒惰。

标签: java


【解决方案1】:

一行中发生的事情越少越好。如果您选择第二个选项,代码将更易于调试(您可以在第二次初始化发生的行上放置一个断点,例如跳过第一个)并且更易于阅读(恕我直言)。唯一花费你的是一条线。我认为这是值得的。

【讨论】:

    【解决方案2】:

    这只是品味和偏好的问题。但是,如果您不设置指导方针,它将成为大多数开发团队中无休止的辩论/争论的温床,与 Vim 与 Emacs 或 IntelliJ 与 Eclipse 并驾齐驱。

    我建议为您的团队设置编码标准,最简单的方法是参考现有的标准,例如 Sun(现在的 Oracle)Java 指南,在这种情况下建议每行使用一个声明。

    以下是 Sun 的权威指南关于声明的内容[1]:

    6.1 每行数

    建议每行一个声明,因为它鼓励评论。换句话说,

    int level; // indentation level
    int size;  // size of table
    

    优于

    int level, size;
    

    不要将不同的类型放在同一行。示例:

    int foo,  fooarray[]; //WRONG!
    

    [1]http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-141270.html#2991

    【讨论】:

      【解决方案3】:

      这是你的选择,但我在使用局部变量时经常使用第二个,而对于全局变量,我使用以下内容来减少混乱:

      public static final String CONSTANT_A = "constant a",
                                 CONSTANT_B = "constant b",
                                 CONSTANT_C = "constant c";
      

      而不是

      public static final String CONSTANT_A = "constant a";
      public static final String CONSTANT_B = "constant b";
      public static final String CONSTANT_C = "constant c";
      

      在这个例子中,它并不重要,但想象一下有 40 多个常量并告诉我你更喜欢哪一个......

      【讨论】:

      • 如果你最终在一个地方有 40 多个常量,你就会遇到一些设计问题,这种“减少混乱”的方式只是止痛药,而不是补救措施
      • @KonradMorawski - 如果我没有犯错,我在想一个协议的幻数,但显然现在很难说。我仍然不知道比这个更好的解决方案。
      • 拥有一堆常量不是“设计问题”,@KonradMorawski。为了谈论设计问题,我们需要了解上下文。一个充满常量的 Java 文件只是一些数据,我们无法有效地判断它。
      • @DavidS 有这么多 在一个地方 至少是可能存在设计问题的有力指标(对于初学者来说,可能违反 SRP)
      【解决方案4】:

      第二个变体更易读。想想那些会阅读你的代码的人

      【讨论】:

      • 使用第二种变体有什么问题吗?
      • @IgorGanapolsky,不,两种变体都适用于 JVM
      【解决方案5】:

      Java 最佳实践声明“每行一个声明”。

      【讨论】:

        【解决方案6】:

        每行声明多个变量会降低代码的可读性并导致程序员混淆。它还可能导致对变量类型及其初始值的混淆。特别是,不要在单个声明中声明以下任何内容:

        1. Variables of different types
        2. A mixture of initialized and uninitialized variables
        

        另外,你可以声明多个变量,并分配多个变量,但不能同时进行

        【讨论】:

          猜你喜欢
          • 2020-12-13
          • 2021-01-09
          • 1970-01-01
          • 2014-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多