Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.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_Oop - Fatal编程技术网

在java中,为什么有些开发人员在变量名之前使用下划线在这篇文章中已经看到了人们答案的不同

在java中,为什么有些开发人员在变量名之前使用下划线在这篇文章中已经看到了人们答案的不同,java,oop,Java,Oop,我正在读Martin Fowler的重构书。在他的许多重构示例中,他都使用以\u varname开头的变量。为什么?这是我的时代之前的老习俗吗?在过去的一年里,当我开始学习Java时,我还没有看到任何人在工作中使用它。请告知应在何处以及为什么使用 我已经看到了这个问题答案的不同。。。 为什么martin fowler在提取方法重构的代码中这样做 发件人: 致: 最有可能的是,将局部变量与类成员区分开来 编辑:现在您已经添加了示例代码,情况确实如此。该约定通常用于私有字段。 您不必使用它,最重要的

我正在读Martin Fowler的重构书。在他的许多重构示例中,他都使用以
\u varname
开头的变量。为什么?这是我的时代之前的老习俗吗?在过去的一年里,当我开始学习Java时,我还没有看到任何人在工作中使用它。请告知应在何处以及为什么使用

我已经看到了这个问题答案的不同。。。 为什么martin fowler在提取方法重构的代码中这样做

发件人:

致:


最有可能的是,将局部变量与类成员区分开来


编辑:现在您已经添加了示例代码,情况确实如此。

该约定通常用于私有字段。
您不必使用它,最重要的是保持一致性,因此如果您使用的是现有的代码库,请继续使用该样式。

惯例是以下划线开头对象的私有字段的名称,以便将它们与代码中的局部变量区分开来。这项公约并不普遍。就我个人而言,我认为如果语法高亮显示也显示了差异,那就有点多余了

另一种方法(尽管您也可以同时使用这两种方法)是始终通过
this
引用成员:

package org.foo.bar;

class Baz {
    private String quux;

    Baz (String quux) {
        this.quux = quux;
    }

    String getQuux () {
        return this.quux;
    }
}

我认为这个问题属于程序员,可能是重复的-有一个类似的主题[在java中为什么一些开发人员使用下划线作为变量名]是的,区分局部变量和类成员
amount
是一个局部变量,因此它没有下划线
\u name
是一个类成员。有人声称这是重复的建议答案与我的问题无关。我不是问一般的下划线。我指的是当下划线放在变量名之前时。因此,我认为变量名之前的下划线是可以被
this
关键字引用的成员变量,这样安全吗?一些人在这篇文章中声称,这个约定是用来强调私有变量的。是的。不过,我在
protected
和默认作用域以及私有类成员中看到过它。关键是它是针对类成员的。私有变量是类成员。
void printOwing(double amount) {
  printBanner();
  printDetails(amount);
}
package org.foo.bar;

class Baz {
    private String quux;

    Baz (String quux) {
        this.quux = quux;
    }

    String getQuux () {
        return this.quux;
    }
}