Java设置器和;这";
我注意到很多人在Java setter中都做过这样的事情: (一) 我个人不喜欢这样,我认为应该是这样: (二) 有什么理由认为第一种会更好吗 不容易出错吗。在一些情况下,我跟踪了代码中的bug,直到有人在做:Java设置器和;这";,java,Java,我注意到很多人在Java setter中都做过这样的事情: (一) 我个人不喜欢这样,我认为应该是这样: (二) 有什么理由认为第一种会更好吗 不容易出错吗。在一些情况下,我跟踪了代码中的bug,直到有人在做: x = x; 错了,可能是因为他们打字太快了,只是想把接受者和接受者挡开。我不认为这里有“更好”或“更糟”的意思。这只是风格的问题。为什么喜欢这个.x=x: 在构造函数中使用this.x=x,这是一种已知的模式,Java程序员可以识别 字段和参数中的x表示相同的值 对于x=newX,
x = x;
错了,可能是因为他们打字太快了,只是想把接受者和接受者挡开。我不认为这里有“更好”或“更糟”的意思。这只是风格的问题。为什么喜欢
这个.x=x
:
this.x=x
,这是一种已知的模式,Java程序员可以识别李>
x
表示相同的值x=newX
,没有语法指示一个是字段,另一个是参数这是风格的问题。赞成
public void setX(int x) { this.x = x; }
您不需要为输入参数想出一个新的有意义的名称,因为您已经有了一个名称
选择一种样式并始终如一地使用它。我假设setter是由IDE自动生成的。因此,我的首选是IDE中默认使用的表单。也就是说,我对它相当中立,觉得它不值得更改默认的IDE设置。我更喜欢
this.x=x代码>。在这方面真的没有正确的方法。在IDE中,在这个
上添加额外的颜色会很好看 这只是一种编码惯例。你可以自由选择,但要坚持使用它。同样,一个普通的IDE可以在几次击键/点击中自动生成所有的getter/setter。例如,在Eclipse中,先执行Alt+Shift+R,然后执行S,然后选择要为其生成getter/setter的属性,然后单击OK。此外,当您执行x=x
而不是this.x=x
时,平均IDE将显示警告
我自己更喜欢这个.x=x
。默认情况下,Eclipse和许多反向工程工具(如Dali和Hibernate工具)也以这种方式生成
x=newX
约定(The)只是从(老式的)过程编程世界继承而来,根本不适合OO思想。如果它是您自己的代码或不是现有基础的一部分,请选择您喜欢的代码并坚持使用它。但是,如果您正在使用现有代码,请遵循已经使用的任何约定 这完全是主观的,但第一种形式在javadoc等中提供了一个清晰的方法原型
我觉得使用'this.x=x'表单不会有太大的错误空间。当然,没有什么是不会被单元测试抓住的。您确实有单元测试,对吗?不是第一个容易出错的测试。有几次,我追踪到了代码中的bug,一直到人们在做:x=x;错了,可能是因为他们打字太快了,只是想把接球手和接球手挡开:)谁打接球手和接球手?所有有价值的IDE都将为您生成它们。如果你碰巧“打字太快”,所有有价值的IDE都会马上告诉你“x=x”是错误的。你为什么要自己打字呢?运行eclipse,click,click,done。我自己并不急于完成代码,但我不能阻止其他人匆忙完成它。我也更喜欢第一个选项。但不确定为什么会被否决。Eclipse在生成getter和setter时会自动使用this.x=x样式。这可能就是为什么这么多人使用这种风格。我更喜欢第二种形式,不总是使用newX
作为参数名,而是this.x=x
是变量隐藏的一种形式,因此我不会使用它。根据我的经验,使用第二种形式的错误非常常见。是的,我同意,约定有时更重要。反向工程工具需要使用“this.x=x”来理解它吗?不,这只是他们遵守的标准约定。是的,你的权利。我想我是在微软C和C++上长大的,所以匈牙利符号是我从来没有长大过的东西之一,但也许我应该有:)我有单元测试是的,而且总是写它们,但是你会惊讶于我在他们的单元测试中几乎没有任何代码覆盖。为参数使用时髦的名称(如newX或pX)只会让javadoc看起来很糟糕。
x = x;
public void setX(int x) { this.x = x; }