Java单行变量声明?

Java单行变量声明?,java,Java,在我的Java类中,我声明的变量如下 BigDecimal sumFeeBilled = new BigDecimal(0), sumPaid = new BigDecimal(0); 或者我们必须在多行中这样声明 BigDecimal sumFeeBilled = new BigDecimal(0); BigDecimal sumPaid = new BigDecimal(0); 我们应该遵循哪一条?一条线上发生的事情越少越好。如果您选择第二个选项,代码将更易于调试(您可以在发生第二次

在我的Java类中,我声明的变量如下

BigDecimal sumFeeBilled = new BigDecimal(0), sumPaid = new BigDecimal(0); 
或者我们必须在多行中这样声明

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

我们应该遵循哪一条?

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

第二种变体更具可读性。想想那些会阅读您的代码的人吧,Java最佳实践声明“每行声明一次”。

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

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

此外,您可以声明多个变量,并分配多个变量,但不能同时声明多个变量

这是您的选择,但在使用局部变量时,我通常使用第二个变量,对于全局变量,我使用以下方法来减少混乱:

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多个常数,告诉我你喜欢哪一个…

这只是口味和偏好的问题。然而,如果您不制定指导原则,它将成为大多数开发团队中无休止的辩论/争论的温床,与Vim vs Emacs或IntelliJ vs 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]

这是一个品味和代码可读性的问题。这是一个观点的问题,但我更喜欢第二种方式,因为它更清晰。@Kayaman完全同意。我的眼睛被训练在第一个声明的变量被赋值后停止。我更喜欢第二种方式,因为它更可读…我认为这比观点更重要。说这话,伊姆霍,暗示了一种非常个人主义的世界观。有些东西必须有一个标准,如果你为我工作,你的意见将是无效的,因为我希望,并要求,我的代码库在可读性和结构方面同样可靠地一致。如果你的代码只限于你自己,那么我想它会是你喜欢的任何东西,但我能想到的唯一原因是出于懒惰。如果你最终在一个地方有40多个常量,你会遇到一些设计问题,而这种“减少混乱”的方法只是一种止痛药,而不是一种方法remedy@KonradMorawski-如果我没有犯错,我在考虑一个协议的幻数,但很明显,现在很难说。“我仍然不知道比这个更好的解决方案。拥有一堆常量不是一个“设计问题”,KonradMorawski说。为了讨论设计问题,我们需要了解上下文。一个充满常量的Java文件只是一些数据,我们无法有效地判断它。@DavidS在一个地方有这么多常量至少是一个可能的设计问题的有力指标(对于初学者来说,可能违反了SRP)。使用第二个变量有什么困难吗?@IgorGanapolsky,没有,这两个变量对JVM都适用