Обычное использование «this» в классе Java для ссылки на переменную экземпляра - PullRequest
3 голосов
/ 02 ноября 2010

Допустимо ли следующее использование «this» для ссылки на переменную экземпляра в текущем классе? В PHP это то, как вы должны это сделать, но я заметил, что в Java вы можете просто вызывать переменную по имени напрямую.

Лично я нахожу "this.variable" более понятным, но я не хочу развивать плохие привычки кодирования, если это не нормально.

Спасибо!

public class MyClass {  

    /**
     * Private variable
     */
    private int myInt;

    /**
     * Setter method
     */
    public void setMyInt(int value) {
        this.myInt = value;
    }   
}

Ответы [ 5 ]

7 голосов
/ 02 ноября 2010

Как говорили люди, это не обязательно, но это приемлемо.

Это, как говорится, необходимо, если вы делаете что-то вроде этого:

private int value;

public void setValue(int value) {
     this.value = value;
}

Различает переменную класса и параметр с одинаковым именем. Я обнаружил, что использую этот шаблон почти в каждом моём установщике, и это единственный случай, когда я использую ключевое слово this.

1 голос
/ 02 ноября 2010

Я бы написал ваш код так:

public class MyClass {

  private int myInt;

  public void setMyInt(int myInt) {
    this.myInt = myInt;
  }
}

Разница с вашим (помимо удаления ненужного Javadoc) в том, что в моем коде параметр имеет то же имя, что и переменная-член. Другие пользователи предпочитают давать переменной-члену имя, отличное от параметра, но мы предпочитаем префикс переменных-членов , где необходимо с this. из-за визуального баланса. За более чем 10 лет Java-кодирования с использованием этого стандарта у нас никогда не было ошибки, вызванной использованием неверной переменной.

1 голос
/ 02 ноября 2010

Это вполне приемлемая практика в Java, хотя она не обязательна (как вы упомянули).

0 голосов
/ 02 ноября 2010

Если ваше рабочее место или проект не имеет руководства по стилю, которое специально запрещает использовать this таким образом, я бы сказал, что то, что вы делаете, прекрасно. Я лично использую this только тогда, когда это строго необходимо (например, когда я инициализирую переменную экземпляра с параметром метода с тем же именем), но я видел много кода, который всегда использует this для ссылки на члены. Это может быть более читабельным, и, конечно, не намного менее читабельным, так что дерзайте!

0 голосов
/ 02 ноября 2010

Используйте это или нет, просто будьте последовательны в кодовой базе. Вы должны использовать его, если переменная замаскирована, хотя (с помощью аргумента или локальной переменной метода)

...