Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java设置器和;这";_Java - Fatal编程技术网

Java设置器和;这";

Java设置器和;这";,java,Java,我注意到很多人在Java setter中都做过这样的事情: (一) 我个人不喜欢这样,我认为应该是这样: (二) 有什么理由认为第一种会更好吗 不容易出错吗。在一些情况下,我跟踪了代码中的bug,直到有人在做: x = x; 错了,可能是因为他们打字太快了,只是想把接受者和接受者挡开。我不认为这里有“更好”或“更糟”的意思。这只是风格的问题。为什么喜欢这个.x=x: 在构造函数中使用this.x=x,这是一种已知的模式,Java程序员可以识别 字段和参数中的x表示相同的值 对于x=newX,

我注意到很多人在Java setter中都做过这样的事情:

(一)

我个人不喜欢这样,我认为应该是这样:

(二)

有什么理由认为第一种会更好吗

不容易出错吗。在一些情况下,我跟踪了代码中的bug,直到有人在做:

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; }